@budibase/server 2.3.2-alpha.3 → 2.3.3

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 (543) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.584d49b4.css → index.4488f38d.css} +1 -1
  3. package/builder/assets/{index.bef36368.js → index.ef71e5c7.js} +199 -199
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +6527 -11196
  6. package/coverage/coverage-final.json +269 -353
  7. package/coverage/lcov-report/index.html +180 -405
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +140 -140
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +47 -47
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +26 -26
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +37 -37
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +81 -81
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +26 -26
  21. package/coverage/lcov-report/src/api/controllers/index.html +37 -37
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +15 -15
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +34 -34
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +18 -18
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
  58. package/coverage/lcov-report/src/api/controllers/query/index.html +1 -1
  59. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +33 -33
  60. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  61. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  62. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  63. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +419 -431
  64. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +175 -211
  65. package/coverage/lcov-report/src/api/controllers/row/index.html +42 -42
  66. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +78 -78
  67. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +34 -34
  68. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +6 -6
  69. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
  70. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +31 -31
  71. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  72. package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
  73. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  74. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +22 -22
  75. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +51 -51
  76. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +195 -198
  77. package/coverage/lcov-report/src/api/controllers/table/index.html +47 -47
  78. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +42 -42
  79. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +61 -61
  80. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +63 -63
  81. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  82. package/coverage/lcov-report/src/api/controllers/user.ts.html +28 -28
  83. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +2 -2
  84. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +16 -16
  86. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
  87. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +7 -7
  88. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +25 -25
  89. package/coverage/lcov-report/src/api/index.html +1 -1
  90. package/coverage/lcov-report/src/api/index.ts.html +27 -27
  91. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  92. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  93. package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
  94. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  95. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  96. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  97. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  100. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  101. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  102. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/index.ts.html +35 -35
  104. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  106. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  107. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  108. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  109. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  110. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +17 -14
  111. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  113. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
  115. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  116. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  117. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  118. package/coverage/lcov-report/src/api/routes/public/tests/index.html +12 -42
  119. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +27 -78
  120. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  121. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  122. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  124. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  125. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  126. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  127. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  128. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  130. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  131. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +41 -110
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +19 -19
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +17 -23
  135. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  136. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  138. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  139. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  140. package/coverage/lcov-report/src/app.ts.html +35 -38
  141. package/coverage/lcov-report/src/automations/actions.ts.html +24 -24
  142. package/coverage/lcov-report/src/automations/automationUtils.ts.html +4 -4
  143. package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
  144. package/coverage/lcov-report/src/automations/index.html +27 -27
  145. package/coverage/lcov-report/src/automations/index.ts.html +9 -9
  146. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  147. package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
  148. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  149. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  150. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  151. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  152. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  153. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  154. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  155. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  156. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  158. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  159. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
  160. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +13 -13
  161. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  162. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +4 -4
  163. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  164. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  165. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  166. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  170. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggers.ts.html +46 -46
  178. package/coverage/lcov-report/src/automations/utils.ts.html +63 -63
  179. package/coverage/lcov-report/src/constants/index.html +16 -16
  180. package/coverage/lcov-report/src/constants/index.ts.html +99 -33
  181. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  182. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  183. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -33
  184. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  185. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  186. package/coverage/lcov-report/src/db/defaultData/index.html +11 -11
  187. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  188. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  189. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  190. package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
  191. package/coverage/lcov-report/src/db/index.html +16 -16
  192. package/coverage/lcov-report/src/db/index.ts.html +19 -19
  193. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +23 -26
  194. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  195. package/coverage/lcov-report/src/db/linkedRows/index.html +10 -10
  196. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +23 -23
  197. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +10 -10
  198. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  199. package/coverage/lcov-report/src/db/utils.ts.html +52 -52
  200. package/coverage/lcov-report/src/definitions/automations.ts.html +2 -2
  201. package/coverage/lcov-report/src/definitions/index.html +1 -1
  202. package/coverage/lcov-report/src/environment.ts.html +32 -32
  203. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  204. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +6 -6
  205. package/coverage/lcov-report/src/events/index.html +1 -1
  206. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  207. package/coverage/lcov-report/src/events/utils.ts.html +10 -10
  208. package/coverage/lcov-report/src/index.html +16 -16
  209. package/coverage/lcov-report/src/index.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  211. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  212. package/coverage/lcov-report/src/integrations/base/index.html +30 -30
  213. package/coverage/lcov-report/src/integrations/base/query.ts.html +9 -9
  214. package/coverage/lcov-report/src/integrations/base/sql.ts.html +187 -217
  215. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +107 -107
  216. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  217. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  219. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  220. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  221. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  222. package/coverage/lcov-report/src/integrations/index.html +27 -27
  223. package/coverage/lcov-report/src/integrations/index.ts.html +37 -37
  224. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  225. package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
  226. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  227. package/coverage/lcov-report/src/integrations/oracle.ts.html +14 -14
  228. package/coverage/lcov-report/src/integrations/postgres.ts.html +65 -65
  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 +5 -5
  232. package/coverage/lcov-report/src/integrations/rest.ts.html +15 -15
  233. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  234. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  235. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  236. package/coverage/lcov-report/src/integrations/tests/index.html +5 -230
  237. package/coverage/lcov-report/src/integrations/utils.ts.html +74 -74
  238. package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
  239. package/coverage/lcov-report/src/middleware/authorized.ts.html +29 -29
  240. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  241. package/coverage/lcov-report/src/middleware/currentapp.ts.html +53 -53
  242. package/coverage/lcov-report/src/middleware/index.html +15 -15
  243. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  244. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  245. package/coverage/lcov-report/src/middleware/resourceId.ts.html +28 -28
  246. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  247. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  248. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  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 +5 -5
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  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 +7 -7
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  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 +5 -5
  265. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  266. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  268. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  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 +2 -2
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  274. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  275. package/coverage/lcov-report/src/migrations/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  277. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/index.html +8 -23
  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 +4 -4
  282. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
  283. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  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 +3 -3
  286. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +10 -10
  287. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  288. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +23 -41
  289. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
  290. package/coverage/lcov-report/src/sdk/app/backups/index.html +10 -10
  291. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  292. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  293. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +39 -39
  294. package/coverage/lcov-report/src/sdk/app/datasources/index.html +1 -1
  295. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +3 -3
  296. package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +3 -3
  298. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +4 -4
  299. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  300. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  301. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  302. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  303. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  304. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +10 -10
  305. package/coverage/lcov-report/src/sdk/index.html +1 -1
  306. package/coverage/lcov-report/src/sdk/index.ts.html +11 -11
  307. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  308. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  309. package/coverage/lcov-report/src/sdk/users/utils.ts.html +31 -31
  310. package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
  311. package/coverage/lcov-report/src/sdk/utils/index.ts.html +11 -11
  312. package/coverage/lcov-report/src/startup.ts.html +42 -42
  313. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +189 -387
  314. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  315. package/coverage/lcov-report/src/tests/utilities/index.html +18 -18
  316. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  317. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +27 -33
  318. package/coverage/lcov-report/src/threads/automation.ts.html +22 -22
  319. package/coverage/lcov-report/src/threads/index.html +1 -1
  320. package/coverage/lcov-report/src/threads/index.ts.html +10 -10
  321. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  322. package/coverage/lcov-report/src/threads/utils.ts.html +9 -9
  323. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  324. package/coverage/lcov-report/src/utilities/centralPath.ts.html +2 -2
  325. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +17 -17
  326. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +8 -8
  327. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +25 -25
  328. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  329. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +6 -6
  330. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +8 -8
  331. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  332. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
  333. package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
  334. package/coverage/lcov-report/src/utilities/index.html +19 -34
  335. package/coverage/lcov-report/src/utilities/index.ts.html +26 -26
  336. package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
  337. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  338. package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
  339. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +19 -19
  340. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +49 -49
  341. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  342. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  343. package/coverage/lcov-report/src/utilities/schema.ts.html +3 -3
  344. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  345. package/coverage/lcov-report/src/utilities/security.ts.html +22 -22
  346. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  347. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  348. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  349. package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
  350. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +15 -15
  351. package/coverage/lcov-report/src/watch.ts.html +7 -7
  352. package/coverage/lcov-report/src/websocket.ts.html +5 -5
  353. package/coverage/lcov.info +11292 -18907
  354. package/dist/api/controllers/row/ExternalRequest.js +2 -4
  355. package/dist/api/controllers/row/external.js +1 -12
  356. package/dist/api/controllers/table/external.js +8 -8
  357. package/dist/api/routes/public/tests/utils.js +2 -29
  358. package/dist/app.js +1 -1
  359. package/dist/constants/index.js +24 -4
  360. package/dist/db/defaultData/datasource_bb_default.js +5 -6
  361. package/dist/db/linkedRows/LinkController.js +8 -9
  362. package/dist/integrations/base/sql.js +3 -10
  363. package/dist/package.json +6 -8
  364. package/dist/sdk/app/backups/exports.js +2 -8
  365. package/dist/tsconfig.build.tsbuildinfo +1 -1
  366. package/jest.config.ts +11 -28
  367. package/package.json +7 -9
  368. package/specs/openapi.json +6 -6
  369. package/specs/openapi.yaml +3 -3
  370. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  371. package/src/api/controllers/row/ExternalRequest.ts +2 -6
  372. package/src/api/controllers/row/external.ts +1 -13
  373. package/src/api/controllers/table/external.ts +2 -3
  374. package/src/api/routes/public/applications.ts +1 -0
  375. package/src/api/routes/public/tests/compare.spec.js +1 -1
  376. package/src/api/routes/public/tests/users.spec.js +1 -1
  377. package/src/api/routes/public/tests/utils.ts +8 -25
  378. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  379. package/src/api/routes/tests/analytics.spec.js +1 -4
  380. package/src/api/routes/tests/apikeys.spec.js +1 -1
  381. package/src/api/routes/tests/application.spec.ts +6 -20
  382. package/src/api/routes/tests/auth.spec.js +2 -2
  383. package/src/api/routes/tests/automation.spec.js +2 -6
  384. package/src/api/routes/tests/backup.spec.ts +13 -4
  385. package/src/api/routes/tests/{cloud.seq.spec.ts → cloud.spec.ts} +15 -11
  386. package/src/api/routes/tests/component.spec.js +1 -1
  387. package/src/api/routes/tests/datasource.spec.ts +3 -20
  388. package/src/api/routes/tests/dev.spec.js +1 -1
  389. package/src/api/routes/tests/integration.spec.js +1 -1
  390. package/src/api/routes/tests/layout.spec.js +1 -1
  391. package/src/api/routes/tests/metadata.spec.js +1 -1
  392. package/src/api/routes/tests/misc.spec.js +1 -1
  393. package/src/api/routes/tests/permissions.spec.js +1 -4
  394. package/src/api/routes/tests/{query.seq.spec.js → query.spec.js} +1 -21
  395. package/src/api/routes/tests/role.spec.js +1 -6
  396. package/src/api/routes/tests/routing.spec.js +1 -1
  397. package/src/api/routes/tests/row.spec.js +3 -11
  398. package/src/api/routes/tests/screen.spec.js +1 -1
  399. package/src/api/routes/tests/static.spec.js +1 -2
  400. package/src/api/routes/tests/table.spec.js +1 -1
  401. package/src/api/routes/tests/templates.spec.js +1 -1
  402. package/src/api/routes/tests/user.spec.js +0 -3
  403. package/src/api/routes/tests/utilities/TestFunctions.ts +2 -25
  404. package/src/api/routes/tests/utilities/index.ts +3 -5
  405. package/src/api/routes/tests/view.spec.js +1 -4
  406. package/src/api/routes/tests/webhook.spec.js +2 -11
  407. package/src/app.ts +1 -2
  408. package/src/automations/tests/automation.spec.js +4 -4
  409. package/src/automations/tests/bash.spec.js +1 -1
  410. package/src/automations/tests/discord.spec.js +1 -1
  411. package/src/automations/tests/executeQuery.spec.js +3 -2
  412. package/src/automations/tests/executeScript.spec.js +1 -1
  413. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  414. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  415. package/src/automations/tests/serverLog.spec.js +1 -1
  416. package/src/automations/tests/updateRow.spec.js +1 -1
  417. package/src/automations/tests/zapier.spec.js +1 -1
  418. package/src/constants/index.ts +23 -1
  419. package/src/db/defaultData/datasource_bb_default.ts +10 -6
  420. package/src/db/linkedRows/LinkController.ts +1 -2
  421. package/src/db/tests/linkController.spec.js +1 -4
  422. package/src/db/tests/linkTests.spec.js +1 -1
  423. package/src/integrations/base/sql.ts +5 -15
  424. package/src/integrations/oracle.ts +1 -1
  425. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  426. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  427. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  428. package/src/migrations/tests/index.spec.ts +2 -3
  429. package/src/sdk/app/backups/exports.ts +2 -8
  430. package/src/tests/jestEnv.ts +6 -2
  431. package/src/tests/jestSetup.ts +6 -5
  432. package/src/tests/utilities/TestConfiguration.ts +46 -112
  433. package/src/tests/utilities/structures.ts +2 -4
  434. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +0 -391
  435. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +0 -116
  436. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +0 -116
  437. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +0 -796
  438. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +0 -116
  439. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +0 -805
  440. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +0 -116
  441. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +0 -568
  442. package/coverage/lcov-report/src/api/controllers/view/tests/index.html +0 -116
  443. package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +0 -277
  444. package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +0 -583
  445. package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +0 -199
  446. package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +0 -271
  447. package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +0 -259
  448. package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +0 -1066
  449. package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +0 -154
  450. package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +0 -1123
  451. package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +0 -223
  452. package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +0 -268
  453. package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +0 -178
  454. package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +0 -799
  455. package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +0 -202
  456. package/coverage/lcov-report/src/api/routes/tests/index.html +0 -521
  457. package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +0 -238
  458. package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +0 -670
  459. package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +0 -259
  460. package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +0 -280
  461. package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +0 -358
  462. package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +0 -484
  463. package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +0 -622
  464. package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +0 -1696
  465. package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +0 -478
  466. package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +0 -430
  467. package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +0 -1804
  468. package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +0 -391
  469. package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +0 -541
  470. package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +0 -991
  471. package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +0 -154
  472. package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +0 -688
  473. package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +0 -1342
  474. package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +0 -484
  475. package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +0 -337
  476. package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +0 -187
  477. package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +0 -223
  478. package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +0 -133
  479. package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +0 -250
  480. package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +0 -166
  481. package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +0 -229
  482. package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +0 -229
  483. package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +0 -232
  484. package/coverage/lcov-report/src/automations/tests/index.html +0 -341
  485. package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +0 -220
  486. package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +0 -202
  487. package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +0 -436
  488. package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +0 -298
  489. package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +0 -151
  490. package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +0 -217
  491. package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +0 -166
  492. package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +0 -280
  493. package/coverage/lcov-report/src/automations/unitTests/index.html +0 -116
  494. package/coverage/lcov-report/src/db/tests/index.html +0 -131
  495. package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +0 -793
  496. package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +0 -277
  497. package/coverage/lcov-report/src/integration-test/index.html +0 -116
  498. package/coverage/lcov-report/src/integration-test/postgres.spec.ts.html +0 -2341
  499. package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +0 -310
  500. package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +0 -199
  501. package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +0 -349
  502. package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +0 -550
  503. package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +0 -331
  504. package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +0 -376
  505. package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +0 -253
  506. package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +0 -1087
  507. package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +0 -484
  508. package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +0 -373
  509. package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +0 -328
  510. package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +0 -337
  511. package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +0 -1870
  512. package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +0 -421
  513. package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +0 -1753
  514. package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +0 -574
  515. package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +0 -814
  516. package/coverage/lcov-report/src/middleware/tests/index.html +0 -161
  517. package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +0 -397
  518. package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +0 -214
  519. package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +0 -163
  520. package/coverage/lcov-report/src/migrations/functions/tests/index.html +0 -161
  521. package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +0 -163
  522. package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +0 -517
  523. package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +0 -190
  524. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +0 -131
  525. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +0 -190
  526. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +0 -244
  527. package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +0 -535
  528. package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +0 -313
  529. package/coverage/lcov-report/src/sdk/tests/index.html +0 -116
  530. package/coverage/lcov-report/src/utilities/retry.ts.html +0 -139
  531. package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +0 -116
  532. package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +0 -256
  533. package/dist/api/routes/tests/utilities/index.js +0 -131
  534. package/dist/tests/utilities/TestConfiguration.js +0 -618
  535. package/dist/tests/utilities/controllers.js +0 -40
  536. package/dist/tests/utilities/structures.js +0 -226
  537. package/dist/utilities/retry.js +0 -30
  538. package/jest-testcontainers-config.js +0 -8
  539. package/scripts/load/create-many-apps.js +0 -24
  540. package/scripts/load/create-many-rows.js +0 -30
  541. package/scripts/load/utils.js +0 -66
  542. package/src/integration-test/postgres.spec.ts +0 -752
  543. package/src/utilities/retry.ts +0 -18
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">67.57% </span>
26
+ <span class="strong">2.73% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>198/293</span>
28
+ <span class='fraction'>8/293</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">53.22% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>99/186</span>
35
+ <span class='fraction'>0/186</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">81.81% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>27/33</span>
42
+ <span class='fraction'>0/33</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">67.35% </span>
47
+ <span class="strong">2.74% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>196/291</span>
49
+ <span class='fraction'>8/291</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line low'></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>
@@ -803,11 +803,7 @@
803
803
  <a name='L738'></a><a href='#L738'>738</a>
804
804
  <a name='L739'></a><a href='#L739'>739</a>
805
805
  <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
806
+ <a name='L741'></a><a href='#L741'>741</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
811
807
  <span class="cline-any cline-neutral">&nbsp;</span>
812
808
  <span class="cline-any cline-neutral">&nbsp;</span>
813
809
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -819,23 +815,23 @@
819
815
  <span class="cline-any cline-neutral">&nbsp;</span>
820
816
  <span class="cline-any cline-neutral">&nbsp;</span>
821
817
  <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-yes">56x</span>
822
819
  <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-yes">57x</span>
824
820
  <span class="cline-any cline-neutral">&nbsp;</span>
825
821
  <span class="cline-any cline-neutral">&nbsp;</span>
826
822
  <span class="cline-any cline-neutral">&nbsp;</span>
827
823
  <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-yes">56x</span>
825
+ <span class="cline-any cline-yes">56x</span>
826
+ <span class="cline-any cline-yes">56x</span>
828
827
  <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-yes">57x</span>
830
- <span class="cline-any cline-yes">57x</span>
831
- <span class="cline-any cline-yes">57x</span>
828
+ <span class="cline-any cline-yes">56x</span>
829
+ <span class="cline-any cline-yes">56x</span>
830
+ <span class="cline-any cline-yes">56x</span>
832
831
  <span class="cline-any cline-neutral">&nbsp;</span>
833
- <span class="cline-any cline-yes">57x</span>
834
- <span class="cline-any cline-yes">57x</span>
835
- <span class="cline-any cline-yes">57x</span>
836
832
  <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-yes">56x</span>
837
834
  <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-yes">57x</span>
839
835
  <span class="cline-any cline-neutral">&nbsp;</span>
840
836
  <span class="cline-any cline-neutral">&nbsp;</span>
841
837
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -860,17 +856,15 @@
860
856
  <span class="cline-any cline-neutral">&nbsp;</span>
861
857
  <span class="cline-any cline-neutral">&nbsp;</span>
862
858
  <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-no">&nbsp;</span>
863
860
  <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-no">&nbsp;</span>
862
+ <span class="cline-any cline-no">&nbsp;</span>
864
863
  <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-yes">264x</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-yes">264x</span>
868
- <span class="cline-any cline-yes">264x</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-yes">264x</span>
871
- <span class="cline-any cline-yes">264x</span>
872
- <span class="cline-any cline-yes">2x</span>
873
- <span class="cline-any cline-yes">2x</span>
864
+ <span class="cline-any cline-no">&nbsp;</span>
865
+ <span class="cline-any cline-no">&nbsp;</span>
866
+ <span class="cline-any cline-no">&nbsp;</span>
867
+ <span class="cline-any cline-no">&nbsp;</span>
874
868
  <span class="cline-any cline-no">&nbsp;</span>
875
869
  <span class="cline-any cline-no">&nbsp;</span>
876
870
  <span class="cline-any cline-no">&nbsp;</span>
@@ -885,21 +879,21 @@
885
879
  <span class="cline-any cline-neutral">&nbsp;</span>
886
880
  <span class="cline-any cline-neutral">&nbsp;</span>
887
881
  <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-yes">264x</span>
889
- <span class="cline-any cline-yes">244x</span>
882
+ <span class="cline-any cline-no">&nbsp;</span>
883
+ <span class="cline-any cline-no">&nbsp;</span>
890
884
  <span class="cline-any cline-neutral">&nbsp;</span>
891
885
  <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-yes">20x</span>
893
- <span class="cline-any cline-yes">2x</span>
886
+ <span class="cline-any cline-no">&nbsp;</span>
887
+ <span class="cline-any cline-no">&nbsp;</span>
894
888
  <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-yes">20x</span>
896
- <span class="cline-any cline-yes">20x</span>
897
- <span class="cline-any cline-yes">20x</span>
889
+ <span class="cline-any cline-no">&nbsp;</span>
890
+ <span class="cline-any cline-no">&nbsp;</span>
891
+ <span class="cline-any cline-no">&nbsp;</span>
898
892
  <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-yes">20x</span>
893
+ <span class="cline-any cline-no">&nbsp;</span>
900
894
  <span class="cline-any cline-neutral">&nbsp;</span>
901
895
  <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-yes">20x</span>
896
+ <span class="cline-any cline-no">&nbsp;</span>
903
897
  <span class="cline-any cline-neutral">&nbsp;</span>
904
898
  <span class="cline-any cline-neutral">&nbsp;</span>
905
899
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -913,62 +907,62 @@
913
907
  <span class="cline-any cline-neutral">&nbsp;</span>
914
908
  <span class="cline-any cline-neutral">&nbsp;</span>
915
909
  <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-yes">132x</span>
910
+ <span class="cline-any cline-no">&nbsp;</span>
917
911
  <span class="cline-any cline-neutral">&nbsp;</span>
918
912
  <span class="cline-any cline-neutral">&nbsp;</span>
919
913
  <span class="cline-any cline-neutral">&nbsp;</span>
920
914
  <span class="cline-any cline-neutral">&nbsp;</span>
921
915
  <span class="cline-any cline-neutral">&nbsp;</span>
922
916
  <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-yes">132x</span>
924
- <span class="cline-any cline-yes">2267x</span>
925
- <span class="cline-any cline-yes">499x</span>
926
- <span class="cline-any cline-yes">132x</span>
927
- <span class="cline-any cline-yes">107x</span>
928
- <span class="cline-any cline-yes">967x</span>
917
+ <span class="cline-any cline-no">&nbsp;</span>
918
+ <span class="cline-any cline-no">&nbsp;</span>
919
+ <span class="cline-any cline-no">&nbsp;</span>
920
+ <span class="cline-any cline-no">&nbsp;</span>
921
+ <span class="cline-any cline-no">&nbsp;</span>
922
+ <span class="cline-any cline-no">&nbsp;</span>
929
923
  <span class="cline-any cline-no">&nbsp;</span>
930
924
  <span class="cline-any cline-neutral">&nbsp;</span>
931
925
  <span class="cline-any cline-neutral">&nbsp;</span>
932
926
  <span class="cline-any cline-neutral">&nbsp;</span>
933
927
  <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-yes">132x</span>
935
- <span class="cline-any cline-yes">2x</span>
928
+ <span class="cline-any cline-no">&nbsp;</span>
929
+ <span class="cline-any cline-no">&nbsp;</span>
936
930
  <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-yes">2x</span>
931
+ <span class="cline-any cline-no">&nbsp;</span>
938
932
  <span class="cline-any cline-neutral">&nbsp;</span>
939
933
  <span class="cline-any cline-neutral">&nbsp;</span>
940
934
  <span class="cline-any cline-neutral">&nbsp;</span>
941
935
  <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-yes">1x</span>
936
+ <span class="cline-any cline-no">&nbsp;</span>
943
937
  <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-yes">1x</span>
938
+ <span class="cline-any cline-no">&nbsp;</span>
945
939
  <span class="cline-any cline-neutral">&nbsp;</span>
946
940
  <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-yes">132x</span>
948
- <span class="cline-any cline-yes">106x</span>
941
+ <span class="cline-any cline-no">&nbsp;</span>
942
+ <span class="cline-any cline-no">&nbsp;</span>
949
943
  <span class="cline-any cline-neutral">&nbsp;</span>
950
944
  <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-yes">132x</span>
945
+ <span class="cline-any cline-no">&nbsp;</span>
952
946
  <span class="cline-any cline-neutral">&nbsp;</span>
953
947
  <span class="cline-any cline-neutral">&nbsp;</span>
954
948
  <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-yes">648x</span>
956
- <span class="cline-any cline-yes">648x</span>
957
- <span class="cline-any cline-yes">17x</span>
949
+ <span class="cline-any cline-no">&nbsp;</span>
950
+ <span class="cline-any cline-no">&nbsp;</span>
951
+ <span class="cline-any cline-no">&nbsp;</span>
958
952
  <span class="cline-any cline-neutral">&nbsp;</span>
959
953
  <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-yes">631x</span>
961
- <span class="cline-any cline-yes">631x</span>
954
+ <span class="cline-any cline-no">&nbsp;</span>
955
+ <span class="cline-any cline-no">&nbsp;</span>
962
956
  <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-yes">631x</span>
964
- <span class="cline-any cline-yes">631x</span>
965
- <span class="cline-any cline-yes">359x</span>
957
+ <span class="cline-any cline-no">&nbsp;</span>
958
+ <span class="cline-any cline-no">&nbsp;</span>
959
+ <span class="cline-any cline-no">&nbsp;</span>
966
960
  <span class="cline-any cline-neutral">&nbsp;</span>
967
961
  <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-yes">631x</span>
969
- <span class="cline-any cline-yes">272x</span>
962
+ <span class="cline-any cline-no">&nbsp;</span>
963
+ <span class="cline-any cline-no">&nbsp;</span>
970
964
  <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-yes">359x</span>
965
+ <span class="cline-any cline-no">&nbsp;</span>
972
966
  <span class="cline-any cline-neutral">&nbsp;</span>
973
967
  <span class="cline-any cline-neutral">&nbsp;</span>
974
968
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -984,25 +978,25 @@
984
978
  <span class="cline-any cline-neutral">&nbsp;</span>
985
979
  <span class="cline-any cline-neutral">&nbsp;</span>
986
980
  <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-yes">347x</span>
981
+ <span class="cline-any cline-no">&nbsp;</span>
988
982
  <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-yes">347x</span>
990
- <span class="cline-any cline-yes">1373x</span>
991
- <span class="cline-any cline-yes">1373x</span>
983
+ <span class="cline-any cline-no">&nbsp;</span>
984
+ <span class="cline-any cline-no">&nbsp;</span>
985
+ <span class="cline-any cline-no">&nbsp;</span>
992
986
  <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-yes">1373x</span>
994
- <span class="cline-any cline-yes">701x</span>
987
+ <span class="cline-any cline-no">&nbsp;</span>
988
+ <span class="cline-any cline-no">&nbsp;</span>
995
989
  <span class="cline-any cline-neutral">&nbsp;</span>
996
990
  <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-yes">347x</span>
998
- <span class="cline-any cline-yes">347x</span>
999
- <span class="cline-any cline-yes">347x</span>
1000
- <span class="cline-any cline-yes">347x</span>
991
+ <span class="cline-any cline-no">&nbsp;</span>
992
+ <span class="cline-any cline-no">&nbsp;</span>
993
+ <span class="cline-any cline-no">&nbsp;</span>
994
+ <span class="cline-any cline-no">&nbsp;</span>
1001
995
  <span class="cline-any cline-neutral">&nbsp;</span>
1002
996
  <span class="cline-any cline-neutral">&nbsp;</span>
1003
997
  <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-yes">179x</span>
1005
- <span class="cline-any cline-yes">1037x</span>
998
+ <span class="cline-any cline-no">&nbsp;</span>
999
+ <span class="cline-any cline-no">&nbsp;</span>
1006
1000
  <span class="cline-any cline-neutral">&nbsp;</span>
1007
1001
  <span class="cline-any cline-neutral">&nbsp;</span>
1008
1002
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1014,27 +1008,27 @@
1014
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
1015
1009
  <span class="cline-any cline-neutral">&nbsp;</span>
1016
1010
  <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-yes">179x</span>
1011
+ <span class="cline-any cline-no">&nbsp;</span>
1018
1012
  <span class="cline-any cline-neutral">&nbsp;</span>
1019
1013
  <span class="cline-any cline-neutral">&nbsp;</span>
1020
1014
  <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-yes">103x</span>
1015
+ <span class="cline-any cline-no">&nbsp;</span>
1022
1016
  <span class="cline-any cline-neutral">&nbsp;</span>
1023
1017
  <span class="cline-any cline-neutral">&nbsp;</span>
1024
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
1025
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-yes">132x</span>
1020
+ <span class="cline-any cline-no">&nbsp;</span>
1027
1021
  <span class="cline-any cline-neutral">&nbsp;</span>
1028
1022
  <span class="cline-any cline-neutral">&nbsp;</span>
1029
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-yes">132x</span>
1024
+ <span class="cline-any cline-no">&nbsp;</span>
1031
1025
  <span class="cline-any cline-neutral">&nbsp;</span>
1032
1026
  <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-yes">132x</span>
1034
- <span class="cline-any cline-yes">132x</span>
1035
- <span class="cline-any cline-yes">132x</span>
1036
- <span class="cline-any cline-yes">132x</span>
1037
- <span class="cline-any cline-yes">1x</span>
1027
+ <span class="cline-any cline-no">&nbsp;</span>
1028
+ <span class="cline-any cline-no">&nbsp;</span>
1029
+ <span class="cline-any cline-no">&nbsp;</span>
1030
+ <span class="cline-any cline-no">&nbsp;</span>
1031
+ <span class="cline-any cline-no">&nbsp;</span>
1038
1032
  <span class="cline-any cline-neutral">&nbsp;</span>
1039
1033
  <span class="cline-any cline-neutral">&nbsp;</span>
1040
1034
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1049,37 +1043,37 @@
1049
1043
  <span class="cline-any cline-neutral">&nbsp;</span>
1050
1044
  <span class="cline-any cline-neutral">&nbsp;</span>
1051
1045
  <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-yes">132x</span>
1053
- <span class="cline-any cline-yes">26x</span>
1046
+ <span class="cline-any cline-no">&nbsp;</span>
1047
+ <span class="cline-any cline-no">&nbsp;</span>
1054
1048
  <span class="cline-any cline-neutral">&nbsp;</span>
1055
1049
  <span class="cline-any cline-neutral">&nbsp;</span>
1056
1050
  <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-yes">106x</span>
1058
- <span class="cline-any cline-yes">106x</span>
1059
- <span class="cline-any cline-yes">106x</span>
1060
- <span class="cline-any cline-yes">106x</span>
1051
+ <span class="cline-any cline-no">&nbsp;</span>
1052
+ <span class="cline-any cline-no">&nbsp;</span>
1053
+ <span class="cline-any cline-no">&nbsp;</span>
1054
+ <span class="cline-any cline-no">&nbsp;</span>
1061
1055
  <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-yes">603x</span>
1056
+ <span class="cline-any cline-no">&nbsp;</span>
1063
1057
  <span class="cline-any cline-neutral">&nbsp;</span>
1064
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
1065
1059
  <span class="cline-any cline-neutral">&nbsp;</span>
1066
1060
  <span class="cline-any cline-neutral">&nbsp;</span>
1067
1061
  <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-yes">301x</span>
1062
+ <span class="cline-any cline-no">&nbsp;</span>
1069
1063
  <span class="cline-any cline-neutral">&nbsp;</span>
1070
1064
  <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-yes">302x</span>
1065
+ <span class="cline-any cline-no">&nbsp;</span>
1072
1066
  <span class="cline-any cline-no">&nbsp;</span>
1073
1067
  <span class="cline-any cline-no">&nbsp;</span>
1074
1068
  <span class="cline-any cline-neutral">&nbsp;</span>
1075
1069
  <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-yes">302x</span>
1077
- <span class="cline-any cline-yes">101x</span>
1070
+ <span class="cline-any cline-no">&nbsp;</span>
1071
+ <span class="cline-any cline-no">&nbsp;</span>
1078
1072
  <span class="cline-any cline-neutral">&nbsp;</span>
1079
1073
  <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-yes">302x</span>
1081
- <span class="cline-any cline-yes">302x</span>
1082
- <span class="cline-any cline-yes">302x</span>
1074
+ <span class="cline-any cline-no">&nbsp;</span>
1075
+ <span class="cline-any cline-no">&nbsp;</span>
1076
+ <span class="cline-any cline-no">&nbsp;</span>
1083
1077
  <span class="cline-any cline-neutral">&nbsp;</span>
1084
1078
  <span class="cline-any cline-no">&nbsp;</span>
1085
1079
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1133,7 +1127,7 @@
1133
1127
  <span class="cline-any cline-neutral">&nbsp;</span>
1134
1128
  <span class="cline-any cline-neutral">&nbsp;</span>
1135
1129
  <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-yes">106x</span>
1130
+ <span class="cline-any cline-no">&nbsp;</span>
1137
1131
  <span class="cline-any cline-neutral">&nbsp;</span>
1138
1132
  <span class="cline-any cline-neutral">&nbsp;</span>
1139
1133
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1141,21 +1135,21 @@
1141
1135
  <span class="cline-any cline-neutral">&nbsp;</span>
1142
1136
  <span class="cline-any cline-neutral">&nbsp;</span>
1143
1137
  <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-yes">179x</span>
1145
- <span class="cline-any cline-yes">171x</span>
1146
- <span class="cline-any cline-yes">171x</span>
1147
- <span class="cline-any cline-yes">170x</span>
1138
+ <span class="cline-any cline-no">&nbsp;</span>
1139
+ <span class="cline-any cline-no">&nbsp;</span>
1140
+ <span class="cline-any cline-no">&nbsp;</span>
1141
+ <span class="cline-any cline-no">&nbsp;</span>
1148
1142
  <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-yes">1x</span>
1150
- <span class="cline-any cline-yes">1x</span>
1151
- <span class="cline-any cline-yes">1x</span>
1152
- <span class="cline-any cline-yes">1x</span>
1143
+ <span class="cline-any cline-no">&nbsp;</span>
1144
+ <span class="cline-any cline-no">&nbsp;</span>
1145
+ <span class="cline-any cline-no">&nbsp;</span>
1146
+ <span class="cline-any cline-no">&nbsp;</span>
1153
1147
  <span class="cline-any cline-neutral">&nbsp;</span>
1154
1148
  <span class="cline-any cline-neutral">&nbsp;</span>
1155
1149
  <span class="cline-any cline-neutral">&nbsp;</span>
1156
1150
  <span class="cline-any cline-neutral">&nbsp;</span>
1157
1151
  <span class="cline-any cline-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-yes">179x</span>
1152
+ <span class="cline-any cline-no">&nbsp;</span>
1159
1153
  <span class="cline-any cline-neutral">&nbsp;</span>
1160
1154
  <span class="cline-any cline-neutral">&nbsp;</span>
1161
1155
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1172,46 +1166,46 @@
1172
1166
  <span class="cline-any cline-neutral">&nbsp;</span>
1173
1167
  <span class="cline-any cline-neutral">&nbsp;</span>
1174
1168
  <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-yes">179x</span>
1176
- <span class="cline-any cline-yes">179x</span>
1177
- <span class="cline-any cline-yes">171x</span>
1178
- <span class="cline-any cline-yes">171x</span>
1169
+ <span class="cline-any cline-no">&nbsp;</span>
1170
+ <span class="cline-any cline-no">&nbsp;</span>
1171
+ <span class="cline-any cline-no">&nbsp;</span>
1172
+ <span class="cline-any cline-no">&nbsp;</span>
1179
1173
  <span class="cline-any cline-no">&nbsp;</span>
1180
1174
  <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-yes">171x</span>
1182
- <span class="cline-any cline-yes">171x</span>
1175
+ <span class="cline-any cline-no">&nbsp;</span>
1176
+ <span class="cline-any cline-no">&nbsp;</span>
1183
1177
  <span class="cline-any cline-neutral">&nbsp;</span>
1184
1178
  <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-yes">171x</span>
1179
+ <span class="cline-any cline-no">&nbsp;</span>
1186
1180
  <span class="cline-any cline-neutral">&nbsp;</span>
1187
1181
  <span class="cline-any cline-neutral">&nbsp;</span>
1188
1182
  <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-yes">3x</span>
1183
+ <span class="cline-any cline-no">&nbsp;</span>
1190
1184
  <span class="cline-any cline-neutral">&nbsp;</span>
1191
- <span class="cline-any cline-yes">168x</span>
1192
- <span class="cline-any cline-yes">168x</span>
1193
- <span class="cline-any cline-yes">167x</span>
1185
+ <span class="cline-any cline-no">&nbsp;</span>
1186
+ <span class="cline-any cline-no">&nbsp;</span>
1187
+ <span class="cline-any cline-no">&nbsp;</span>
1194
1188
  <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-yes">1x</span>
1189
+ <span class="cline-any cline-no">&nbsp;</span>
1196
1190
  <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-yes">179x</span>
1198
- <span class="cline-any cline-yes">1x</span>
1191
+ <span class="cline-any cline-no">&nbsp;</span>
1192
+ <span class="cline-any cline-no">&nbsp;</span>
1199
1193
  <span class="cline-any cline-no">&nbsp;</span>
1200
1194
  <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-yes">1x</span>
1202
- <span class="cline-any cline-yes">1x</span>
1203
- <span class="cline-any cline-yes">1x</span>
1195
+ <span class="cline-any cline-no">&nbsp;</span>
1196
+ <span class="cline-any cline-no">&nbsp;</span>
1197
+ <span class="cline-any cline-no">&nbsp;</span>
1204
1198
  <span class="cline-any cline-neutral">&nbsp;</span>
1205
1199
  <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-yes">1x</span>
1200
+ <span class="cline-any cline-no">&nbsp;</span>
1207
1201
  <span class="cline-any cline-neutral">&nbsp;</span>
1208
1202
  <span class="cline-any cline-no">&nbsp;</span>
1209
1203
  <span class="cline-any cline-neutral">&nbsp;</span>
1210
1204
  <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-yes">1x</span>
1205
+ <span class="cline-any cline-no">&nbsp;</span>
1212
1206
  <span class="cline-any cline-neutral">&nbsp;</span>
1213
1207
  <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-yes">179x</span>
1208
+ <span class="cline-any cline-no">&nbsp;</span>
1215
1209
  <span class="cline-any cline-neutral">&nbsp;</span>
1216
1210
  <span class="cline-any cline-neutral">&nbsp;</span>
1217
1211
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1219,15 +1213,15 @@
1219
1213
  <span class="cline-any cline-neutral">&nbsp;</span>
1220
1214
  <span class="cline-any cline-neutral">&nbsp;</span>
1221
1215
  <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-yes">132x</span>
1223
- <span class="cline-any cline-yes">2x</span>
1216
+ <span class="cline-any cline-no">&nbsp;</span>
1217
+ <span class="cline-any cline-no">&nbsp;</span>
1224
1218
  <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-yes">130x</span>
1226
- <span class="cline-any cline-yes">130x</span>
1227
- <span class="cline-any cline-yes">179x</span>
1228
- <span class="cline-any cline-yes">179x</span>
1219
+ <span class="cline-any cline-no">&nbsp;</span>
1220
+ <span class="cline-any cline-no">&nbsp;</span>
1221
+ <span class="cline-any cline-no">&nbsp;</span>
1222
+ <span class="cline-any cline-no">&nbsp;</span>
1229
1223
  <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-yes">179x</span>
1224
+ <span class="cline-any cline-no">&nbsp;</span>
1231
1225
  <span class="cline-any cline-no">&nbsp;</span>
1232
1226
  <span class="cline-any cline-neutral">&nbsp;</span>
1233
1227
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1236,13 +1230,13 @@
1236
1230
  <span class="cline-any cline-neutral">&nbsp;</span>
1237
1231
  <span class="cline-any cline-no">&nbsp;</span>
1238
1232
  <span class="cline-any cline-neutral">&nbsp;</span>
1239
- <span class="cline-any cline-yes">179x</span>
1240
- <span class="cline-any cline-yes">179x</span>
1233
+ <span class="cline-any cline-no">&nbsp;</span>
1234
+ <span class="cline-any cline-no">&nbsp;</span>
1241
1235
  <span class="cline-any cline-no">&nbsp;</span>
1242
1236
  <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-yes">179x</span>
1237
+ <span class="cline-any cline-no">&nbsp;</span>
1244
1238
  <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-yes">179x</span>
1239
+ <span class="cline-any cline-no">&nbsp;</span>
1246
1240
  <span class="cline-any cline-neutral">&nbsp;</span>
1247
1241
  <span class="cline-any cline-neutral">&nbsp;</span>
1248
1242
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1251,12 +1245,12 @@
1251
1245
  <span class="cline-any cline-neutral">&nbsp;</span>
1252
1246
  <span class="cline-any cline-neutral">&nbsp;</span>
1253
1247
  <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-yes">130x</span>
1255
- <span class="cline-any cline-yes">130x</span>
1256
- <span class="cline-any cline-yes">130x</span>
1248
+ <span class="cline-any cline-no">&nbsp;</span>
1249
+ <span class="cline-any cline-no">&nbsp;</span>
1250
+ <span class="cline-any cline-no">&nbsp;</span>
1257
1251
  <span class="cline-any cline-neutral">&nbsp;</span>
1258
- <span class="cline-any cline-yes">130x</span>
1259
- <span class="cline-any cline-yes">179x</span>
1252
+ <span class="cline-any cline-no">&nbsp;</span>
1253
+ <span class="cline-any cline-no">&nbsp;</span>
1260
1254
  <span class="cline-any cline-neutral">&nbsp;</span>
1261
1255
  <span class="cline-any cline-neutral">&nbsp;</span>
1262
1256
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1266,21 +1260,21 @@
1266
1260
  <span class="cline-any cline-neutral">&nbsp;</span>
1267
1261
  <span class="cline-any cline-neutral">&nbsp;</span>
1268
1262
  <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-yes">132x</span>
1270
- <span class="cline-any cline-yes">132x</span>
1271
- <span class="cline-any cline-yes">755x</span>
1272
- <span class="cline-any cline-yes">631x</span>
1263
+ <span class="cline-any cline-no">&nbsp;</span>
1264
+ <span class="cline-any cline-no">&nbsp;</span>
1265
+ <span class="cline-any cline-no">&nbsp;</span>
1266
+ <span class="cline-any cline-no">&nbsp;</span>
1273
1267
  <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-yes">124x</span>
1268
+ <span class="cline-any cline-no">&nbsp;</span>
1275
1269
  <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-yes">124x</span>
1270
+ <span class="cline-any cline-no">&nbsp;</span>
1277
1271
  <span class="cline-any cline-no">&nbsp;</span>
1278
1272
  <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-yes">124x</span>
1280
- <span class="cline-any cline-yes">124x</span>
1273
+ <span class="cline-any cline-no">&nbsp;</span>
1274
+ <span class="cline-any cline-no">&nbsp;</span>
1281
1275
  <span class="cline-any cline-no">&nbsp;</span>
1282
1276
  <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-yes">124x</span>
1277
+ <span class="cline-any cline-no">&nbsp;</span>
1284
1278
  <span class="cline-any cline-neutral">&nbsp;</span>
1285
1279
  <span class="cline-any cline-neutral">&nbsp;</span>
1286
1280
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1288,7 +1282,7 @@
1288
1282
  <span class="cline-any cline-neutral">&nbsp;</span>
1289
1283
  <span class="cline-any cline-neutral">&nbsp;</span>
1290
1284
  <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-yes">124x</span>
1285
+ <span class="cline-any cline-no">&nbsp;</span>
1292
1286
  <span class="cline-any cline-no">&nbsp;</span>
1293
1287
  <span class="cline-any cline-neutral">&nbsp;</span>
1294
1288
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1299,9 +1293,9 @@
1299
1293
  <span class="cline-any cline-no">&nbsp;</span>
1300
1294
  <span class="cline-any cline-no">&nbsp;</span>
1301
1295
  <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-yes">124x</span>
1296
+ <span class="cline-any cline-no">&nbsp;</span>
1303
1297
  <span class="cline-any cline-neutral">&nbsp;</span>
1304
- <span class="cline-any cline-yes">132x</span>
1298
+ <span class="cline-any cline-no">&nbsp;</span>
1305
1299
  <span class="cline-any cline-neutral">&nbsp;</span>
1306
1300
  <span class="cline-any cline-neutral">&nbsp;</span>
1307
1301
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1309,23 +1303,23 @@
1309
1303
  <span class="cline-any cline-neutral">&nbsp;</span>
1310
1304
  <span class="cline-any cline-neutral">&nbsp;</span>
1311
1305
  <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-yes">110x</span>
1313
- <span class="cline-any cline-yes">110x</span>
1314
- <span class="cline-any cline-yes">110x</span>
1306
+ <span class="cline-any cline-no">&nbsp;</span>
1307
+ <span class="cline-any cline-no">&nbsp;</span>
1308
+ <span class="cline-any cline-no">&nbsp;</span>
1315
1309
  <span class="cline-any cline-no">&nbsp;</span>
1316
1310
  <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-yes">110x</span>
1311
+ <span class="cline-any cline-no">&nbsp;</span>
1318
1312
  <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-yes">110x</span>
1313
+ <span class="cline-any cline-no">&nbsp;</span>
1320
1314
  <span class="cline-any cline-neutral">&nbsp;</span>
1321
1315
  <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-yes">110x</span>
1323
- <span class="cline-any cline-yes">627x</span>
1316
+ <span class="cline-any cline-no">&nbsp;</span>
1317
+ <span class="cline-any cline-no">&nbsp;</span>
1324
1318
  <span class="cline-any cline-neutral">&nbsp;</span>
1325
1319
  <span class="cline-any cline-neutral">&nbsp;</span>
1326
1320
  <span class="cline-any cline-neutral">&nbsp;</span>
1327
1321
  <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-yes">627x</span>
1322
+ <span class="cline-any cline-no">&nbsp;</span>
1329
1323
  <span class="cline-any cline-neutral">&nbsp;</span>
1330
1324
  <span class="cline-any cline-no">&nbsp;</span>
1331
1325
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1351,7 +1345,7 @@
1351
1345
  <span class="cline-any cline-no">&nbsp;</span>
1352
1346
  <span class="cline-any cline-no">&nbsp;</span>
1353
1347
  <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-yes">110x</span>
1348
+ <span class="cline-any cline-no">&nbsp;</span>
1355
1349
  <span class="cline-any cline-neutral">&nbsp;</span>
1356
1350
  <span class="cline-any cline-neutral">&nbsp;</span>
1357
1351
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1370,9 +1364,9 @@
1370
1364
  <span class="cline-any cline-neutral">&nbsp;</span>
1371
1365
  <span class="cline-any cline-neutral">&nbsp;</span>
1372
1366
  <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-yes">110x</span>
1374
- <span class="cline-any cline-yes">110x</span>
1375
- <span class="cline-any cline-yes">110x</span>
1367
+ <span class="cline-any cline-no">&nbsp;</span>
1368
+ <span class="cline-any cline-no">&nbsp;</span>
1369
+ <span class="cline-any cline-no">&nbsp;</span>
1376
1370
  <span class="cline-any cline-no">&nbsp;</span>
1377
1371
  <span class="cline-any cline-no">&nbsp;</span>
1378
1372
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1403,7 +1397,7 @@
1403
1397
  <span class="cline-any cline-neutral">&nbsp;</span>
1404
1398
  <span class="cline-any cline-neutral">&nbsp;</span>
1405
1399
  <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-yes">110x</span>
1400
+ <span class="cline-any cline-no">&nbsp;</span>
1407
1401
  <span class="cline-any cline-no">&nbsp;</span>
1408
1402
  <span class="cline-any cline-neutral">&nbsp;</span>
1409
1403
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1428,7 +1422,7 @@
1428
1422
  <span class="cline-any cline-neutral">&nbsp;</span>
1429
1423
  <span class="cline-any cline-neutral">&nbsp;</span>
1430
1424
  <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-yes">110x</span>
1425
+ <span class="cline-any cline-no">&nbsp;</span>
1432
1426
  <span class="cline-any cline-neutral">&nbsp;</span>
1433
1427
  <span class="cline-any cline-neutral">&nbsp;</span>
1434
1428
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1443,75 +1437,73 @@
1443
1437
  <span class="cline-any cline-neutral">&nbsp;</span>
1444
1438
  <span class="cline-any cline-neutral">&nbsp;</span>
1445
1439
  <span class="cline-any cline-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-yes">149x</span>
1440
+ <span class="cline-any cline-no">&nbsp;</span>
1447
1441
  <span class="cline-any cline-neutral">&nbsp;</span>
1448
1442
  <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-yes">789x</span>
1443
+ <span class="cline-any cline-no">&nbsp;</span>
1450
1444
  <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-yes">170x</span>
1445
+ <span class="cline-any cline-no">&nbsp;</span>
1452
1446
  <span class="cline-any cline-neutral">&nbsp;</span>
1453
- <span class="cline-any cline-yes">665x</span>
1447
+ <span class="cline-any cline-no">&nbsp;</span>
1454
1448
  <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-yes">132x</span>
1456
- <span class="cline-any cline-yes">132x</span>
1457
- <span class="cline-any cline-yes">755x</span>
1458
- <span class="cline-any cline-yes">738x</span>
1449
+ <span class="cline-any cline-no">&nbsp;</span>
1450
+ <span class="cline-any cline-no">&nbsp;</span>
1451
+ <span class="cline-any cline-no">&nbsp;</span>
1452
+ <span class="cline-any cline-no">&nbsp;</span>
1459
1453
  <span class="cline-any cline-neutral">&nbsp;</span>
1460
- <span class="cline-any cline-yes">17x</span>
1461
- <span class="cline-any cline-yes">17x</span>
1462
- <span class="cline-any cline-yes">17x</span>
1463
- <span class="cline-any cline-yes">17x</span>
1464
- <span class="cline-any cline-yes">17x</span>
1465
- <span class="cline-any cline-yes">17x</span>
1454
+ <span class="cline-any cline-no">&nbsp;</span>
1455
+ <span class="cline-any cline-no">&nbsp;</span>
1456
+ <span class="cline-any cline-no">&nbsp;</span>
1457
+ <span class="cline-any cline-no">&nbsp;</span>
1458
+ <span class="cline-any cline-no">&nbsp;</span>
1459
+ <span class="cline-any cline-no">&nbsp;</span>
1466
1460
  <span class="cline-any cline-neutral">&nbsp;</span>
1467
1461
  <span class="cline-any cline-neutral">&nbsp;</span>
1468
1462
  <span class="cline-any cline-neutral">&nbsp;</span>
1469
- <span class="cline-any cline-yes">132x</span>
1463
+ <span class="cline-any cline-no">&nbsp;</span>
1470
1464
  <span class="cline-any cline-neutral">&nbsp;</span>
1471
1465
  <span class="cline-any cline-neutral">&nbsp;</span>
1472
1466
  <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-yes">132x</span>
1474
- <span class="cline-any cline-yes">132x</span>
1475
- <span class="cline-any cline-yes">132x</span>
1467
+ <span class="cline-any cline-no">&nbsp;</span>
1468
+ <span class="cline-any cline-no">&nbsp;</span>
1469
+ <span class="cline-any cline-no">&nbsp;</span>
1476
1470
  <span class="cline-any cline-no">&nbsp;</span>
1477
1471
  <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-yes">132x</span>
1479
- <span class="cline-any cline-yes">131x</span>
1480
- <span class="cline-any cline-yes">131x</span>
1472
+ <span class="cline-any cline-no">&nbsp;</span>
1473
+ <span class="cline-any cline-no">&nbsp;</span>
1474
+ <span class="cline-any cline-no">&nbsp;</span>
1481
1475
  <span class="cline-any cline-no">&nbsp;</span>
1482
1476
  <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-yes">131x</span>
1477
+ <span class="cline-any cline-no">&nbsp;</span>
1484
1478
  <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-yes">132x</span>
1486
- <span class="cline-any cline-yes">132x</span>
1487
- <span class="cline-any cline-yes">132x</span>
1479
+ <span class="cline-any cline-no">&nbsp;</span>
1480
+ <span class="cline-any cline-no">&nbsp;</span>
1481
+ <span class="cline-any cline-no">&nbsp;</span>
1488
1482
  <span class="cline-any cline-no">&nbsp;</span>
1489
1483
  <span class="cline-any cline-neutral">&nbsp;</span>
1490
1484
  <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-yes">132x</span>
1485
+ <span class="cline-any cline-no">&nbsp;</span>
1492
1486
  <span class="cline-any cline-neutral">&nbsp;</span>
1493
1487
  <span class="cline-any cline-neutral">&nbsp;</span>
1494
1488
  <span class="cline-any cline-neutral">&nbsp;</span>
1495
1489
  <span class="cline-any cline-neutral">&nbsp;</span>
1496
- <span class="cline-any cline-yes">132x</span>
1497
- <span class="cline-any cline-yes">4x</span>
1490
+ <span class="cline-any cline-no">&nbsp;</span>
1491
+ <span class="cline-any cline-no">&nbsp;</span>
1498
1492
  <span class="cline-any cline-no">&nbsp;</span>
1499
1493
  <span class="cline-any cline-neutral">&nbsp;</span>
1500
1494
  <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-yes">132x</span>
1502
- <span class="cline-any cline-yes">132x</span>
1495
+ <span class="cline-any cline-no">&nbsp;</span>
1496
+ <span class="cline-any cline-no">&nbsp;</span>
1503
1497
  <span class="cline-any cline-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-yes">132x</span>
1505
- <span class="cline-any cline-yes">132x</span>
1506
- <span class="cline-any cline-yes">132x</span>
1498
+ <span class="cline-any cline-no">&nbsp;</span>
1499
+ <span class="cline-any cline-no">&nbsp;</span>
1500
+ <span class="cline-any cline-no">&nbsp;</span>
1507
1501
  <span class="cline-any cline-neutral">&nbsp;</span>
1508
1502
  <span class="cline-any cline-neutral">&nbsp;</span>
1509
1503
  <span class="cline-any cline-neutral">&nbsp;</span>
1510
1504
  <span class="cline-any cline-no">&nbsp;</span>
1511
1505
  <span class="cline-any cline-neutral">&nbsp;</span>
1512
- <span class="cline-any cline-yes">132x</span>
1513
- <span class="cline-any cline-neutral">&nbsp;</span>
1514
- <span class="cline-any cline-neutral">&nbsp;</span>
1506
+ <span class="cline-any cline-no">&nbsp;</span>
1515
1507
  <span class="cline-any cline-neutral">&nbsp;</span>
1516
1508
  <span class="cline-any cline-neutral">&nbsp;</span>
1517
1509
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1535,18 +1527,18 @@
1535
1527
  <span class="cline-any cline-neutral">&nbsp;</span>
1536
1528
  <span class="cline-any cline-neutral">&nbsp;</span>
1537
1529
  <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-yes">132x</span>
1530
+ <span class="cline-any cline-no">&nbsp;</span>
1539
1531
  <span class="cline-any cline-neutral">&nbsp;</span>
1540
- <span class="cline-any cline-yes">132x</span>
1541
- <span class="cline-any cline-yes">110x</span>
1532
+ <span class="cline-any cline-no">&nbsp;</span>
1533
+ <span class="cline-any cline-no">&nbsp;</span>
1542
1534
  <span class="cline-any cline-neutral">&nbsp;</span>
1543
1535
  <span class="cline-any cline-neutral">&nbsp;</span>
1544
1536
  <span class="cline-any cline-neutral">&nbsp;</span>
1545
1537
  <span class="cline-any cline-neutral">&nbsp;</span>
1546
1538
  <span class="cline-any cline-neutral">&nbsp;</span>
1547
- <span class="cline-any cline-yes">132x</span>
1539
+ <span class="cline-any cline-no">&nbsp;</span>
1548
1540
  <span class="cline-any cline-neutral">&nbsp;</span>
1549
- <span class="cline-any cline-yes">132x</span>
1541
+ <span class="cline-any cline-no">&nbsp;</span>
1550
1542
  <span class="cline-any cline-neutral">&nbsp;</span>
1551
1543
  <span class="cline-any cline-neutral">&nbsp;</span>
1552
1544
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1563,7 +1555,6 @@
1563
1555
  FieldSchema,
1564
1556
  Row,
1565
1557
  Table,
1566
- RelationshipTypes,
1567
1558
  } from "@budibase/types"
1568
1559
  import {
1569
1560
  breakRowIdField,
@@ -1572,7 +1563,7 @@ import {
1572
1563
  convertRowId,
1573
1564
  } from "../../../integrations/utils"
1574
1565
  import { getDatasourceAndQuery } from "./utils"
1575
- import { FieldTypes } from "../../../constants"
1566
+ import { FieldTypes, RelationshipTypes } from "../../../constants"
1576
1567
  import { breakExternalTableId, isSQL } from "../../../integrations/utils"
1577
1568
  import { processObjectSync } from "@budibase/string-templates"
1578
1569
  import { cloneDeep } from "lodash/fp"
@@ -1598,23 +1589,22 @@ export interface RunConfig {
1598
1589
  row?: Row
1599
1590
  rows?: Row[]
1600
1591
  tables?: Record&lt;string, Table&gt;
1601
- includeSqlRelationships?: IncludeRelationship
1602
1592
  }
1603
1593
  &nbsp;
1604
- function buildFilters(
1594
+ function <span class="fstat-no" title="function not covered" >buildFilters(</span>
1605
1595
  id: string | undefined | string[],
1606
1596
  filters: SearchFilters,
1607
1597
  table: Table
1608
1598
  ) {
1609
- const primary = table.primary
1599
+ const primary = <span class="cstat-no" title="statement not covered" >table.primary</span>
1610
1600
  // if passed in array need to copy for shifting etc
1611
- let idCopy: undefined | string | any[] = cloneDeep(id)
1612
- if (filters) {
1601
+ let idCopy: undefined | string | any[] = <span class="cstat-no" title="statement not covered" >cloneDeep(id)</span>
1602
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (filters) {</span>
1613
1603
  // need to map over the filters and make sure the _id field isn't present
1614
- let prefix = 1
1615
- for (let operator of Object.values(filters)) {
1616
- for (let field of Object.keys(operator || <span class="branch-1 cbranch-no" title="branch not covered" >{})) {</span>
1617
- <span class="missing-if-branch" title="if path not taken" >I</span>if (removeKeyNumbering(field) === "_id") {
1604
+ let prefix = <span class="cstat-no" title="statement not covered" >1</span>
1605
+ <span class="cstat-no" title="statement not covered" > for (let operator of Object.values(filters)) {</span>
1606
+ <span class="cstat-no" title="statement not covered" > for (let field of Object.keys(operator || {})) {</span>
1607
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (removeKeyNumbering(field) === "_id") {</span>
1618
1608
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (primary) {</span>
1619
1609
  const parts = <span class="cstat-no" title="statement not covered" >breakRowIdField(operator[field])</span>
1620
1610
  <span class="cstat-no" title="statement not covered" > for (let field of primary) {</span>
@@ -1629,21 +1619,21 @@ function buildFilters(
1629
1619
  }
1630
1620
  }
1631
1621
  // there is no id, just use the user provided filters
1632
- if (!idCopy || !table) {
1633
- return filters
1622
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!idCopy || !table) {</span>
1623
+ <span class="cstat-no" title="statement not covered" > return filters</span>
1634
1624
  }
1635
1625
  // if used as URL parameter it will have been joined
1636
- if (!Array.isArray(idCopy)) {
1637
- idCopy = breakRowIdField(idCopy)
1626
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(idCopy)) {</span>
1627
+ <span class="cstat-no" title="statement not covered" > idCopy = breakRowIdField(idCopy)</span>
1638
1628
  }
1639
- const equal: any = {}
1640
- if (primary &amp;&amp; idCopy) {
1641
- for (let field of primary) {
1629
+ const equal: any = <span class="cstat-no" title="statement not covered" >{}</span>
1630
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (primary &amp;&amp; idCopy) {</span>
1631
+ <span class="cstat-no" title="statement not covered" > for (let field of primary) {</span>
1642
1632
  // work through the ID and get the parts
1643
- equal[field] = idCopy.shift()
1633
+ <span class="cstat-no" title="statement not covered" > equal[field] = idCopy.shift()</span>
1644
1634
  }
1645
1635
  }
1646
- return {
1636
+ <span class="cstat-no" title="statement not covered" > return {</span>
1647
1637
  equal,
1648
1638
  }
1649
1639
  }
@@ -1656,63 +1646,63 @@ function buildFilters(
1656
1646
  * simplify it down to the requirements. This function is quite complex as we try to be
1657
1647
  * relatively restrictive over what types of columns we will perform this action for.
1658
1648
  */
1659
- function cleanupConfig(config: RunConfig, table: Table): RunConfig {
1660
- const primaryOptions = [
1649
+ function <span class="fstat-no" title="function not covered" >cleanupConfig(c</span>onfig: RunConfig, table: Table): RunConfig {
1650
+ const primaryOptions = <span class="cstat-no" title="statement not covered" >[</span>
1661
1651
  FieldTypes.STRING,
1662
1652
  FieldTypes.LONGFORM,
1663
1653
  FieldTypes.OPTIONS,
1664
1654
  FieldTypes.NUMBER,
1665
1655
  ]
1666
1656
  // filter out fields which cannot be keys
1667
- const fieldNames = Object.entries(table.schema)
1668
- .filter(schema =&gt; primaryOptions.find(val =&gt; val === schema[1].type))
1669
- .map(([fieldName]) =&gt; fieldName)
1670
- const iterateObject = (obj: { [key: string]: any }) =&gt; {
1671
- for (let [field, value] of Object.entries(obj)) {
1672
- <span class="missing-if-branch" title="if path not taken" >I</span>if (fieldNames.find(name =&gt; name === field) &amp;&amp; isRowId(value)) {
1657
+ const fieldNames = <span class="cstat-no" title="statement not covered" >Object.entries(table.schema)</span>
1658
+ .filter(<span class="fstat-no" title="function not covered" >schema =&gt; <span class="cstat-no" title="statement not covered" >p</span>rimaryOptions.find(<span class="fstat-no" title="function not covered" >val =&gt; <span class="cstat-no" title="statement not covered" >v</span>al === schema[1].type)</span>)</span>
1659
+ .map(<span class="fstat-no" title="function not covered" >([</span>fieldName]) =&gt; <span class="cstat-no" title="statement not covered" >fieldName)</span>
1660
+ const iterateObject = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(o</span>bj: { [key: string]: any }) =&gt; {</span>
1661
+ <span class="cstat-no" title="statement not covered" > for (let [field, value] of Object.entries(obj)) {</span>
1662
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fieldNames.find(<span class="fstat-no" title="function not covered" >name =&gt; <span class="cstat-no" title="statement not covered" >n</span>ame === field) &amp;&amp; i</span>sRowId(value)) {</span>
1673
1663
  <span class="cstat-no" title="statement not covered" > obj[field] = convertRowId(value)</span>
1674
1664
  }
1675
1665
  }
1676
1666
  }
1677
1667
  // check the row and filters to make sure they aren't a key of some sort
1678
- if (config.filters) {
1679
- for (let [key, filter] of Object.entries(config.filters)) {
1668
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (config.filters) {</span>
1669
+ <span class="cstat-no" title="statement not covered" > for (let [key, filter] of Object.entries(config.filters)) {</span>
1680
1670
  // oneOf is an array, don't iterate it
1681
- if (
1671
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
1682
1672
  typeof filter !== "object" ||
1683
1673
  Object.keys(filter).length === 0 ||
1684
1674
  key === FilterType.ONE_OF
1685
1675
  ) {
1686
- continue
1676
+ <span class="cstat-no" title="statement not covered" > continue</span>
1687
1677
  }
1688
- iterateObject(filter)
1678
+ <span class="cstat-no" title="statement not covered" > iterateObject(filter)</span>
1689
1679
  }
1690
1680
  }
1691
- if (config.row) {
1692
- iterateObject(config.row)
1681
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (config.row) {</span>
1682
+ <span class="cstat-no" title="statement not covered" > iterateObject(config.row)</span>
1693
1683
  }
1694
1684
  &nbsp;
1695
- return config
1685
+ <span class="cstat-no" title="statement not covered" > return config</span>
1696
1686
  }
1697
1687
  &nbsp;
1698
- function generateIdForRow(row: Row | undefined, table: Table): string {
1699
- const primary = table.primary
1700
- if (!row || !primary) {
1701
- return ""
1688
+ function <span class="fstat-no" title="function not covered" >generateIdForRow(r</span>ow: Row | undefined, table: Table): string {
1689
+ const primary = <span class="cstat-no" title="statement not covered" >table.primary</span>
1690
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!row || !primary) {</span>
1691
+ <span class="cstat-no" title="statement not covered" > return ""</span>
1702
1692
  }
1703
1693
  // build id array
1704
- let idParts = []
1705
- for (let field of primary) {
1694
+ let idParts = <span class="cstat-no" title="statement not covered" >[]</span>
1695
+ <span class="cstat-no" title="statement not covered" > for (let field of primary) {</span>
1706
1696
  // need to handle table name + field or just field, depending on if relationships used
1707
- const fieldValue = row[`${table.name}.${field}`] || row[field]
1708
- if (fieldValue) {
1709
- idParts.push(fieldValue)
1697
+ const fieldValue = <span class="cstat-no" title="statement not covered" >row[`${table.name}.${field}`] || row[field]</span>
1698
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fieldValue) {</span>
1699
+ <span class="cstat-no" title="statement not covered" > idParts.push(fieldValue)</span>
1710
1700
  }
1711
1701
  }
1712
- if (idParts.length === 0) {
1713
- return ""
1702
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (idParts.length === 0) {</span>
1703
+ <span class="cstat-no" title="statement not covered" > return ""</span>
1714
1704
  }
1715
- return generateRowIdField(idParts)
1705
+ <span class="cstat-no" title="statement not covered" > return generateRowIdField(idParts)</span>
1716
1706
  }
1717
1707
  &nbsp;
1718
1708
  function <span class="fstat-no" title="function not covered" >getEndpoint(t</span>ableId: string | undefined, operation: string) {
@@ -1727,28 +1717,28 @@ function <span class="fstat-no" title="function not covered" >getEndpoint(t</spa
1727
1717
  }
1728
1718
  }
1729
1719
  &nbsp;
1730
- function basicProcessing(row: Row, table: Table): Row {
1731
- const thisRow: Row = {}
1720
+ function <span class="fstat-no" title="function not covered" >basicProcessing(r</span>ow: Row, table: Table): Row {
1721
+ const thisRow: Row = <span class="cstat-no" title="statement not covered" >{}</span>
1732
1722
  // filter the row down to what is actually the row (not joined)
1733
- for (let fieldName of Object.keys(table.schema)) {
1734
- const pathValue = row[`${table.name}.${fieldName}`]
1735
- const value = pathValue != null ? pathValue : row[fieldName]
1723
+ <span class="cstat-no" title="statement not covered" > for (let fieldName of Object.keys(table.schema)) {</span>
1724
+ const pathValue = <span class="cstat-no" title="statement not covered" >row[`${table.name}.${fieldName}`]</span>
1725
+ const value = <span class="cstat-no" title="statement not covered" >pathValue != null ? pathValue : row[fieldName]</span>
1736
1726
  // all responses include "select col as table.col" so that overlaps are handled
1737
- if (value != null) {
1738
- thisRow[fieldName] = value
1727
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (value != null) {</span>
1728
+ <span class="cstat-no" title="statement not covered" > thisRow[fieldName] = value</span>
1739
1729
  }
1740
1730
  }
1741
- thisRow._id = generateIdForRow(row, table)
1742
- thisRow.tableId = table._id
1743
- thisRow._rev = "rev"
1744
- return processFormulas(table, thisRow)
1731
+ <span class="cstat-no" title="statement not covered" > thisRow._id = generateIdForRow(row, table)</span>
1732
+ <span class="cstat-no" title="statement not covered" > thisRow.tableId = table._id</span>
1733
+ <span class="cstat-no" title="statement not covered" > thisRow._rev = "rev"</span>
1734
+ <span class="cstat-no" title="statement not covered" > return processFormulas(table, thisRow)</span>
1745
1735
  }
1746
1736
  &nbsp;
1747
- function fixArrayTypes(row: Row, table: Table) {
1748
- for (let [fieldName, schema] of Object.entries(table.schema)) {
1749
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
1737
+ function <span class="fstat-no" title="function not covered" >fixArrayTypes(r</span>ow: Row, table: Table) {
1738
+ <span class="cstat-no" title="statement not covered" > for (let [fieldName, schema] of Object.entries(table.schema)) {</span>
1739
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
1750
1740
  schema.type === FieldTypes.ARRAY &amp;&amp;
1751
- <span class="branch-1 cbranch-no" title="branch not covered" > typeof row[fieldName] === "string"</span>
1741
+ typeof row[fieldName] === "string"
1752
1742
  ) {
1753
1743
  <span class="cstat-no" title="statement not covered" > try {</span>
1754
1744
  <span class="cstat-no" title="statement not covered" > row[fieldName] = JSON.parse(row[fieldName])</span>
@@ -1758,27 +1748,27 @@ function fixArrayTypes(row: Row, table: Table) {
1758
1748
  }
1759
1749
  }
1760
1750
  }
1761
- return row
1751
+ <span class="cstat-no" title="statement not covered" > return row</span>
1762
1752
  }
1763
1753
  &nbsp;
1764
- function isOneSide(field: FieldSchema) {
1765
- return (
1754
+ function <span class="fstat-no" title="function not covered" >isOneSide(f</span>ield: FieldSchema) {
1755
+ <span class="cstat-no" title="statement not covered" > return (</span>
1766
1756
  field.relationshipType &amp;&amp; field.relationshipType.split("-")[0] === "one"
1767
1757
  )
1768
1758
  }
1769
1759
  &nbsp;
1770
- export class ExternalRequest {
1760
+ export class <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >ExternalRequest {</span></span>
1771
1761
  private operation: Operation
1772
1762
  private tableId: string
1773
1763
  private datasource?: Datasource
1774
- private tables: { [key: string]: Table } = {}
1764
+ private <span class="cstat-no" title="statement not covered" >tables: { [key: string]: Table } = {}</span>
1775
1765
  &nbsp;
1776
- constructor(operation: Operation, tableId: string, datasource?: Datasource) {
1777
- this.operation = operation
1778
- this.tableId = tableId
1779
- this.datasource = datasource
1780
- if (datasource &amp;&amp; datasource.entities) {
1781
- this.tables = datasource.entities
1766
+ <span class="fstat-no" title="function not covered" > constructor(o</span>peration: Operation, tableId: string, datasource?: Datasource) {
1767
+ <span class="cstat-no" title="statement not covered" > this.operation = operation</span>
1768
+ <span class="cstat-no" title="statement not covered" > this.tableId = tableId</span>
1769
+ <span class="cstat-no" title="statement not covered" > this.datasource = datasource</span>
1770
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (datasource &amp;&amp; datasource.entities) {</span>
1771
+ <span class="cstat-no" title="statement not covered" > this.tables = datasource.entities</span>
1782
1772
  }
1783
1773
  }
1784
1774
  &nbsp;
@@ -1792,38 +1782,38 @@ export class ExternalRequest {
1792
1782
  }
1793
1783
  }
1794
1784
  &nbsp;
1795
- inputProcessing(row: Row | undefined, table: Table) {
1796
- if (!row) {
1797
- return { row, manyRelationships: [] }
1785
+ <span class="fstat-no" title="function not covered" > inputProcessing(r</span>ow: Row | undefined, table: Table) {
1786
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!row) {</span>
1787
+ <span class="cstat-no" title="statement not covered" > return { row, manyRelationships: [] }</span>
1798
1788
  }
1799
1789
  // we don't really support composite keys for relationships, this is why [0] is used
1800
1790
  // @ts-ignore
1801
- const tablePrimary: string = table.primary[0]
1802
- let newRow: Row = {},
1803
- manyRelationships: ManyRelationship[] = []
1804
- for (let [key, field] of Object.entries(table.schema)) {
1791
+ const tablePrimary: string = <span class="cstat-no" title="statement not covered" >table.primary[0]</span>
1792
+ let newRow: Row = <span class="cstat-no" title="statement not covered" >{},</span>
1793
+ manyRelationships: ManyRelationship[] = <span class="cstat-no" title="statement not covered" >[]</span>
1794
+ <span class="cstat-no" title="statement not covered" > for (let [key, field] of Object.entries(table.schema)) {</span>
1805
1795
  // if set already, or not set just skip it
1806
- if (
1796
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
1807
1797
  row[key] == null ||
1808
1798
  newRow[key] ||
1809
1799
  field.autocolumn ||
1810
1800
  field.type === FieldTypes.FORMULA
1811
1801
  ) {
1812
- continue
1802
+ <span class="cstat-no" title="statement not covered" > continue</span>
1813
1803
  }
1814
1804
  // if its an empty string then it means return the column to null (if possible)
1815
- <span class="missing-if-branch" title="if path not taken" >I</span>if (row[key] === "") {
1805
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (row[key] === "") {</span>
1816
1806
  <span class="cstat-no" title="statement not covered" > newRow[key] = null</span>
1817
1807
  <span class="cstat-no" title="statement not covered" > continue</span>
1818
1808
  }
1819
1809
  // parse floats/numbers
1820
- if (field.type === FieldTypes.NUMBER &amp;&amp; !isNaN(parseFloat(row[key]))) {
1821
- newRow[key] = parseFloat(row[key])
1810
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type === FieldTypes.NUMBER &amp;&amp; !isNaN(parseFloat(row[key]))) {</span>
1811
+ <span class="cstat-no" title="statement not covered" > newRow[key] = parseFloat(row[key])</span>
1822
1812
  }
1823
1813
  // if its not a link then just copy it over
1824
- if (field.type !== FieldTypes.LINK) {
1825
- newRow[key] = row[key]
1826
- continue
1814
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type !== FieldTypes.LINK) {</span>
1815
+ <span class="cstat-no" title="statement not covered" > newRow[key] = row[key]</span>
1816
+ <span class="cstat-no" title="statement not covered" > continue</span>
1827
1817
  }
1828
1818
  const { tableName: linkTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(field?.tableId)</span>
1829
1819
  // table has to exist for many to many
@@ -1877,29 +1867,29 @@ export class ExternalRequest {
1877
1867
  // we return the relationships that may need to be created in the through table
1878
1868
  // we do this so that if the ID is generated by the DB it can be inserted
1879
1869
  // after the fact
1880
- return { row: newRow, manyRelationships }
1870
+ <span class="cstat-no" title="statement not covered" > return { row: newRow, manyRelationships }</span>
1881
1871
  }
1882
1872
  &nbsp;
1883
- squashRelationshipColumns(
1873
+ <span class="fstat-no" title="function not covered" > squashRelationshipColumns(</span>
1884
1874
  table: Table,
1885
1875
  row: Row,
1886
1876
  relationships: RelationshipsJson[]
1887
1877
  ): Row {
1888
- for (let relationship of relationships) {
1889
- const linkedTable = this.tables[relationship.tableName]
1890
- if (!linkedTable || !row[relationship.column]) {
1891
- continue
1878
+ <span class="cstat-no" title="statement not covered" > for (let relationship of relationships) {</span>
1879
+ const linkedTable = <span class="cstat-no" title="statement not covered" >this.tables[relationship.tableName]</span>
1880
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkedTable || !row[relationship.column]) {</span>
1881
+ <span class="cstat-no" title="statement not covered" > continue</span>
1892
1882
  }
1893
- const display = linkedTable.primaryDisplay
1894
- for (let key of Object.keys(row[relationship.column])) {
1895
- const related: Row = row[relationship.column][key]
1896
- row[relationship.column][key] = {
1897
- primaryDisplay: display ? <span class="branch-0 cbranch-no" title="branch not covered" >related[display] </span>: undefined,
1883
+ const display = <span class="cstat-no" title="statement not covered" >linkedTable.primaryDisplay</span>
1884
+ <span class="cstat-no" title="statement not covered" > for (let key of Object.keys(row[relationship.column])) {</span>
1885
+ const related: Row = <span class="cstat-no" title="statement not covered" >row[relationship.column][key]</span>
1886
+ <span class="cstat-no" title="statement not covered" > row[relationship.column][key] = {</span>
1887
+ primaryDisplay: display ? related[display] : undefined,
1898
1888
  _id: related._id,
1899
1889
  }
1900
1890
  }
1901
1891
  }
1902
- return row
1892
+ <span class="cstat-no" title="statement not covered" > return row</span>
1903
1893
  }
1904
1894
  &nbsp;
1905
1895
  /**
@@ -1910,68 +1900,68 @@ export class ExternalRequest {
1910
1900
  * will be separate rows, with all of the data in each row. We have to decipher what comes
1911
1901
  * from where (which tables) and how to convert that into budibase columns.
1912
1902
  */
1913
- updateRelationshipColumns(
1903
+ <span class="fstat-no" title="function not covered" > updateRelationshipColumns(</span>
1914
1904
  table: Table,
1915
1905
  row: Row,
1916
1906
  rows: { [key: string]: Row },
1917
1907
  relationships: RelationshipsJson[]
1918
1908
  ) {
1919
- const columns: { [key: string]: any } = {}
1920
- for (let relationship of relationships) {
1921
- const linkedTable = this.tables[relationship.tableName]
1922
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkedTable) {
1909
+ const columns: { [key: string]: any } = <span class="cstat-no" title="statement not covered" >{}</span>
1910
+ <span class="cstat-no" title="statement not covered" > for (let relationship of relationships) {</span>
1911
+ const linkedTable = <span class="cstat-no" title="statement not covered" >this.tables[relationship.tableName]</span>
1912
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkedTable) {</span>
1923
1913
  <span class="cstat-no" title="statement not covered" > continue</span>
1924
1914
  }
1925
- const fromColumn = `${table.name}.${relationship.from}`
1926
- const toColumn = `${linkedTable.name}.${relationship.to}`
1915
+ const fromColumn = <span class="cstat-no" title="statement not covered" >`${table.name}.${relationship.from}`</span>
1916
+ const toColumn = <span class="cstat-no" title="statement not covered" >`${linkedTable.name}.${relationship.to}`</span>
1927
1917
  // this is important when working with multiple relationships
1928
1918
  // between the same tables, don't want to overlap/multiply the relations
1929
- if (
1919
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
1930
1920
  !relationship.through &amp;&amp;
1931
1921
  row[fromColumn]?.toString() !== row[toColumn]?.toString()
1932
1922
  ) {
1933
- continue
1923
+ <span class="cstat-no" title="statement not covered" > continue</span>
1934
1924
  }
1935
- let linked = basicProcessing(row, linkedTable)
1936
- if (!linked._id) {
1937
- continue
1925
+ let linked = <span class="cstat-no" title="statement not covered" >basicProcessing(row, linkedTable)</span>
1926
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linked._id) {</span>
1927
+ <span class="cstat-no" title="statement not covered" > continue</span>
1938
1928
  }
1939
- columns[relationship.column] = linked
1929
+ <span class="cstat-no" title="statement not covered" > columns[relationship.column] = linked</span>
1940
1930
  }
1941
- for (let [column, related] of Object.entries(columns)) {
1942
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!row._id) {
1931
+ <span class="cstat-no" title="statement not covered" > for (let [column, related] of Object.entries(columns)) {</span>
1932
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!row._id) {</span>
1943
1933
  <span class="cstat-no" title="statement not covered" > continue</span>
1944
1934
  }
1945
- const rowId: string = row._id
1946
- if (!Array.isArray(rows[rowId][column])) {
1947
- rows[rowId][column] = []
1935
+ const rowId: string = <span class="cstat-no" title="statement not covered" >row._id</span>
1936
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(rows[rowId][column])) {</span>
1937
+ <span class="cstat-no" title="statement not covered" > rows[rowId][column] = []</span>
1948
1938
  }
1949
1939
  // make sure relationship hasn't been found already
1950
- if (
1940
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
1951
1941
  !rows[rowId][column].find(
1952
1942
  <span class="fstat-no" title="function not covered" > (r</span>elation: Row) =&gt; <span class="cstat-no" title="statement not covered" >relation._id === related._id</span>
1953
1943
  )
1954
1944
  ) {
1955
- rows[rowId][column].push(related)
1945
+ <span class="cstat-no" title="statement not covered" > rows[rowId][column].push(related)</span>
1956
1946
  }
1957
1947
  }
1958
- return rows
1948
+ <span class="cstat-no" title="statement not covered" > return rows</span>
1959
1949
  }
1960
1950
  &nbsp;
1961
- outputProcessing(
1951
+ <span class="fstat-no" title="function not covered" > outputProcessing(</span>
1962
1952
  rows: Row[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
1963
1953
  table: Table,
1964
1954
  relationships: RelationshipsJson[]
1965
1955
  ) {
1966
- if (!rows || rows.length === 0 || rows[0].read === true) {
1967
- return []
1956
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!rows || rows.length === 0 || rows[0].read === true) {</span>
1957
+ <span class="cstat-no" title="statement not covered" > return []</span>
1968
1958
  }
1969
- let finalRows: { [key: string]: Row } = {}
1970
- for (let row of rows) {
1971
- const rowId = generateIdForRow(row, table)
1972
- row._id = rowId
1959
+ let finalRows: { [key: string]: Row } = <span class="cstat-no" title="statement not covered" >{}</span>
1960
+ <span class="cstat-no" title="statement not covered" > for (let row of rows) {</span>
1961
+ const rowId = <span class="cstat-no" title="statement not covered" >generateIdForRow(row, table)</span>
1962
+ <span class="cstat-no" title="statement not covered" > row._id = rowId</span>
1973
1963
  // this is a relationship of some sort
1974
- <span class="missing-if-branch" title="if path not taken" >I</span>if (finalRows[rowId]) {
1964
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (finalRows[rowId]) {</span>
1975
1965
  <span class="cstat-no" title="statement not covered" > finalRows = this.updateRelationshipColumns(</span>
1976
1966
  table,
1977
1967
  row,
@@ -1980,13 +1970,13 @@ export class ExternalRequest {
1980
1970
  )
1981
1971
  <span class="cstat-no" title="statement not covered" > continue</span>
1982
1972
  }
1983
- const thisRow = fixArrayTypes(basicProcessing(row, table), table)
1984
- <span class="missing-if-branch" title="if path not taken" >I</span>if (thisRow._id == null) {
1973
+ const thisRow = <span class="cstat-no" title="statement not covered" >fixArrayTypes(basicProcessing(row, table), table)</span>
1974
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (thisRow._id == null) {</span>
1985
1975
  <span class="cstat-no" title="statement not covered" > throw "Unable to generate row ID for SQL rows"</span>
1986
1976
  }
1987
- finalRows[thisRow._id] = thisRow
1977
+ <span class="cstat-no" title="statement not covered" > finalRows[thisRow._id] = thisRow</span>
1988
1978
  // do this at end once its been added to the final rows
1989
- finalRows = this.updateRelationshipColumns(
1979
+ <span class="cstat-no" title="statement not covered" > finalRows = this.updateRelationshipColumns(</span>
1990
1980
  table,
1991
1981
  row,
1992
1982
  finalRows,
@@ -1995,12 +1985,12 @@ export class ExternalRequest {
1995
1985
  }
1996
1986
  &nbsp;
1997
1987
  // Process some additional data types
1998
- let finalRowArray = Object.values(finalRows)
1999
- finalRowArray = processDates(table, finalRowArray)
2000
- finalRowArray = processFormulas(table, finalRowArray) as Row[]
1988
+ let finalRowArray = <span class="cstat-no" title="statement not covered" >Object.values(finalRows)</span>
1989
+ <span class="cstat-no" title="statement not covered" > finalRowArray = processDates(table, finalRowArray)</span>
1990
+ <span class="cstat-no" title="statement not covered" > finalRowArray = processFormulas(table, finalRowArray) as Row[]</span>
2001
1991
  &nbsp;
2002
- return finalRowArray.map((row: Row) =&gt;
2003
- this.squashRelationshipColumns(table, row, relationships)
1992
+ <span class="cstat-no" title="statement not covered" > return finalRowArray.map(<span class="fstat-no" title="function not covered" >(r</span>ow: Row) =&gt;</span>
1993
+ <span class="cstat-no" title="statement not covered" > this.squashRelationshipColumns(table, row, relationships)</span>
2004
1994
  )
2005
1995
  }
2006
1996
  &nbsp;
@@ -2009,30 +1999,30 @@ export class ExternalRequest {
2009
1999
  * this will be used by the underlying library to build whatever relationship mechanism
2010
2000
  * it has (e.g. SQL joins).
2011
2001
  */
2012
- buildRelationships(table: Table): RelationshipsJson[] {
2013
- const relationships = []
2014
- for (let [fieldName, field] of Object.entries(table.schema)) {
2015
- if (field.type !== FieldTypes.LINK) {
2016
- continue
2002
+ <span class="fstat-no" title="function not covered" > buildRelationships(t</span>able: Table): RelationshipsJson[] {
2003
+ const relationships = <span class="cstat-no" title="statement not covered" >[]</span>
2004
+ <span class="cstat-no" title="statement not covered" > for (let [fieldName, field] of Object.entries(table.schema)) {</span>
2005
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type !== FieldTypes.LINK) {</span>
2006
+ <span class="cstat-no" title="statement not covered" > continue</span>
2017
2007
  }
2018
- const { tableName: linkTableName } = breakExternalTableId(field.tableId)
2008
+ const { tableName: linkTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(field.tableId)</span>
2019
2009
  // no table to link to, this is not a valid relationships
2020
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkTableName || !this.tables[linkTableName]) {
2010
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!linkTableName || !this.tables[linkTableName]) {</span>
2021
2011
  <span class="cstat-no" title="statement not covered" > continue</span>
2022
2012
  }
2023
- const linkTable = this.tables[linkTableName]
2024
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!table.primary || !linkTable.primary) {
2013
+ const linkTable = <span class="cstat-no" title="statement not covered" >this.tables[linkTableName]</span>
2014
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!table.primary || !linkTable.primary) {</span>
2025
2015
  <span class="cstat-no" title="statement not covered" > continue</span>
2026
2016
  }
2027
- const definition: any = {
2017
+ const definition: any = <span class="cstat-no" title="statement not covered" >{</span>
2028
2018
  // if no foreign key specified then use the name of the field in other table
2029
- from: field.foreignKey || <span class="branch-1 cbranch-no" title="branch not covered" >table.primary[0],</span>
2019
+ from: field.foreignKey || table.primary[0],
2030
2020
  to: field.fieldName,
2031
2021
  tableName: linkTableName,
2032
2022
  // need to specify where to put this back into
2033
2023
  column: fieldName,
2034
2024
  }
2035
- <span class="missing-if-branch" title="if path not taken" >I</span>if (field.through) {
2025
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.through) {</span>
2036
2026
  const { tableName: throughTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(</span>
2037
2027
  field.through
2038
2028
  )
@@ -2043,33 +2033,33 @@ export class ExternalRequest {
2043
2033
  <span class="cstat-no" title="statement not covered" > definition.fromPrimary = table.primary[0]</span>
2044
2034
  <span class="cstat-no" title="statement not covered" > definition.toPrimary = linkTable.primary[0]</span>
2045
2035
  }
2046
- relationships.push(definition)
2036
+ <span class="cstat-no" title="statement not covered" > relationships.push(definition)</span>
2047
2037
  }
2048
- return relationships
2038
+ <span class="cstat-no" title="statement not covered" > return relationships</span>
2049
2039
  }
2050
2040
  &nbsp;
2051
2041
  /**
2052
2042
  * This is a cached lookup, of relationship records, this is mainly for creating/deleting junction
2053
2043
  * information.
2054
2044
  */
2055
- async lookupRelations(tableId: string, row: Row) {
2056
- const related: { [key: string]: any } = {}
2057
- const { tableName } = breakExternalTableId(tableId)
2058
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {
2045
+ <span class="fstat-no" title="function not covered" > async l</span>ookupRelations(tableId: string, row: Row) {
2046
+ const related: { [key: string]: any } = <span class="cstat-no" title="statement not covered" >{}</span>
2047
+ const { tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
2048
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {</span>
2059
2049
  <span class="cstat-no" title="statement not covered" > return related</span>
2060
2050
  }
2061
- const table = this.tables[tableName]
2051
+ const table = <span class="cstat-no" title="statement not covered" >this.tables[tableName]</span>
2062
2052
  // @ts-ignore
2063
- const primaryKey = table.primary[0]
2053
+ const primaryKey = <span class="cstat-no" title="statement not covered" >table.primary[0]</span>
2064
2054
  // make a new request to get the row with all its relationships
2065
2055
  // we need this to work out if any relationships need removed
2066
- for (let field of Object.values(table.schema)) {
2067
- if (
2056
+ <span class="cstat-no" title="statement not covered" > for (let field of Object.values(table.schema)) {</span>
2057
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
2068
2058
  field.type !== FieldTypes.LINK ||
2069
2059
  !field.fieldName ||
2070
2060
  isOneSide(field)
2071
2061
  ) {
2072
- continue
2062
+ <span class="cstat-no" title="statement not covered" > continue</span>
2073
2063
  }
2074
2064
  const isMany = <span class="cstat-no" title="statement not covered" >field.relationshipType === RelationshipTypes.MANY_TO_MANY</span>
2075
2065
  const tableId = <span class="cstat-no" title="statement not covered" >isMany ? field.through : field.tableId</span>
@@ -2095,7 +2085,7 @@ export class ExternalRequest {
2095
2085
  const storeTo = <span class="cstat-no" title="statement not covered" >isMany ? field.throughFrom || linkPrimaryKey : fieldName</span>
2096
2086
  <span class="cstat-no" title="statement not covered" > related[storeTo] = { rows, isMany, tableId }</span>
2097
2087
  }
2098
- return related
2088
+ <span class="cstat-no" title="statement not covered" > return related</span>
2099
2089
  }
2100
2090
  &nbsp;
2101
2091
  /**
@@ -2108,15 +2098,15 @@ export class ExternalRequest {
2108
2098
  * isn't supposed to exist anymore and delete those. This is better than the usual method of delete them
2109
2099
  * all and then re-create, as theres no chance of losing data (e.g. delete succeed, but write fail).
2110
2100
  */
2111
- async handleManyRelationships(
2101
+ <span class="fstat-no" title="function not covered" > async h</span>andleManyRelationships(
2112
2102
  mainTableId: string,
2113
2103
  row: Row,
2114
2104
  relationships: ManyRelationship[]
2115
2105
  ) {
2116
2106
  // if we're creating (in a through table) need to wipe the existing ones first
2117
- const promises = []
2118
- const related = await this.lookupRelations(mainTableId, row)
2119
- for (let relationship of relationships) {
2107
+ const promises = <span class="cstat-no" title="statement not covered" >[]</span>
2108
+ const related = <span class="cstat-no" title="statement not covered" >await this.lookupRelations(mainTableId, row)</span>
2109
+ <span class="cstat-no" title="statement not covered" > for (let relationship of relationships) {</span>
2120
2110
  const { key, tableId, isUpdate, id, ...rest } = <span class="cstat-no" title="statement not covered" >relationship</span>
2121
2111
  const body: { [key: string]: any } = <span class="cstat-no" title="statement not covered" >processObjectSync(rest, row, {})</span>
2122
2112
  const linkTable = <span class="cstat-no" title="statement not covered" >this.getTable(tableId)</span>
@@ -2147,7 +2137,7 @@ export class ExternalRequest {
2147
2137
  }
2148
2138
  }
2149
2139
  // finally cleanup anything that needs to be removed
2150
- for (let [colName, { isMany, rows, tableId }] of Object.entries(related)) {
2140
+ <span class="cstat-no" title="statement not covered" > for (let [colName, { isMany, rows, tableId }] of Object.entries(related)) {</span>
2151
2141
  const table: Table | undefined = <span class="cstat-no" title="statement not covered" >this.getTable(tableId)</span>
2152
2142
  // if its not the foreign key skip it, nothing to do
2153
2143
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
@@ -2172,7 +2162,7 @@ export class ExternalRequest {
2172
2162
  }
2173
2163
  }
2174
2164
  }
2175
- await Promise.all(promises)
2165
+ <span class="cstat-no" title="statement not covered" > await Promise.all(promises)</span>
2176
2166
  }
2177
2167
  &nbsp;
2178
2168
  /**
@@ -2182,78 +2172,78 @@ export class ExternalRequest {
2182
2172
  * Creating the specific list of fields that we desire, and excluding the ones that are no use to us
2183
2173
  * is more performant and has the added benefit of protecting against this scenario.
2184
2174
  */
2185
- buildFields(
2175
+ <span class="fstat-no" title="function not covered" > buildFields(</span>
2186
2176
  table: Table,
2187
2177
  includeRelations: IncludeRelationship = <span class="branch-0 cbranch-no" title="branch not covered" >IncludeRelationship.INCLUDE</span>
2188
2178
  ) {
2189
- function extractRealFields(table: Table, existing: string[] = []) {
2190
- return Object.entries(table.schema)
2179
+ function <span class="fstat-no" title="function not covered" >extractRealFields(t</span>able: Table, existing: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span> {
2180
+ <span class="cstat-no" title="statement not covered" > return Object.entries(table.schema)</span>
2191
2181
  .filter(
2192
- column =&gt;
2193
- column[1].type !== FieldTypes.LINK &amp;&amp;
2182
+ <span class="fstat-no" title="function not covered" > column =&gt;</span>
2183
+ <span class="cstat-no" title="statement not covered" > column[1].type !== FieldTypes.LINK &amp;&amp;</span>
2194
2184
  column[1].type !== FieldTypes.FORMULA &amp;&amp;
2195
- !existing.find((field: string) =&gt; field === column[0])
2185
+ !existing.find(<span class="fstat-no" title="function not covered" >(f</span>ield: string) =&gt; <span class="cstat-no" title="statement not covered" >field === column[0])</span>
2196
2186
  )
2197
- .map(column =&gt; `${table.name}.${column[0]}`)
2187
+ .map(<span class="fstat-no" title="function not covered" >column =&gt; <span class="cstat-no" title="statement not covered" >`</span>${table.name}.${column[0]}`)</span>
2198
2188
  }
2199
- let fields = extractRealFields(table)
2200
- for (let field of Object.values(table.schema)) {
2201
- if (field.type !== FieldTypes.LINK || !includeRelations) {
2202
- continue
2189
+ let fields = <span class="cstat-no" title="statement not covered" >extractRealFields(table)</span>
2190
+ <span class="cstat-no" title="statement not covered" > for (let field of Object.values(table.schema)) {</span>
2191
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (field.type !== FieldTypes.LINK || !includeRelations) {</span>
2192
+ <span class="cstat-no" title="statement not covered" > continue</span>
2203
2193
  }
2204
- const { tableName: linkTableName } = breakExternalTableId(field.tableId)
2205
- if (linkTableName) {
2206
- const linkTable = this.tables[linkTableName]
2207
- if (linkTable) {
2208
- const linkedFields = extractRealFields(linkTable, fields)
2209
- fields = fields.concat(linkedFields)
2194
+ const { tableName: linkTableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(field.tableId)</span>
2195
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (linkTableName) {</span>
2196
+ const linkTable = <span class="cstat-no" title="statement not covered" >this.tables[linkTableName]</span>
2197
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (linkTable) {</span>
2198
+ const linkedFields = <span class="cstat-no" title="statement not covered" >extractRealFields(linkTable, fields)</span>
2199
+ <span class="cstat-no" title="statement not covered" > fields = fields.concat(linkedFields)</span>
2210
2200
  }
2211
2201
  }
2212
2202
  }
2213
- return fields
2203
+ <span class="cstat-no" title="statement not covered" > return fields</span>
2214
2204
  }
2215
2205
  &nbsp;
2216
- async run(config: RunConfig) {
2217
- const { operation, tableId } = this
2218
- let { datasourceId, tableName } = breakExternalTableId(tableId)
2219
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {
2206
+ <span class="fstat-no" title="function not covered" > async r</span>un(config: RunConfig) {
2207
+ const { operation, tableId } = <span class="cstat-no" title="statement not covered" >this</span>
2208
+ let { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(tableId)</span>
2209
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName) {</span>
2220
2210
  <span class="cstat-no" title="statement not covered" > throw "Unable to run without a table name"</span>
2221
2211
  }
2222
- if (!this.datasource) {
2223
- this.datasource = await sdk.datasources.get(datasourceId!)
2224
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource || !this.datasource.entities) {
2212
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource) {</span>
2213
+ <span class="cstat-no" title="statement not covered" > this.datasource = await sdk.datasources.get(datasourceId!)</span>
2214
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource || !this.datasource.entities) {</span>
2225
2215
  <span class="cstat-no" title="statement not covered" > throw "No tables found, fetch tables before query."</span>
2226
2216
  }
2227
- this.tables = this.datasource.entities
2217
+ <span class="cstat-no" title="statement not covered" > this.tables = this.datasource.entities</span>
2228
2218
  }
2229
- const table = this.tables[tableName]
2230
- let isSql = isSQL(this.datasource)
2231
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!table) {
2219
+ const table = <span class="cstat-no" title="statement not covered" >this.tables[tableName]</span>
2220
+ let isSql = <span class="cstat-no" title="statement not covered" >isSQL(this.datasource)</span>
2221
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!table) {</span>
2232
2222
  <span class="cstat-no" title="statement not covered" > throw `Unable to process query, table "${tableName}" not defined.`</span>
2233
2223
  }
2234
2224
  // look for specific components of config which may not be considered acceptable
2235
- let { id, row, filters, sort, paginate, rows } = cleanupConfig(
2225
+ let { id, row, filters, sort, paginate, rows } = <span class="cstat-no" title="statement not covered" >cleanupConfig(</span>
2236
2226
  config,
2237
2227
  table
2238
2228
  )
2239
2229
  //if the sort column is a formula, remove it
2240
- for (let sortColumn of Object.keys(sort || {})) {
2241
- <span class="missing-if-branch" title="if path not taken" >I</span>if (table.schema[sortColumn]?.type === "formula") {
2230
+ <span class="cstat-no" title="statement not covered" > for (let sortColumn of Object.keys(sort || {})) {</span>
2231
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (table.schema[sortColumn]?.type === "formula") {</span>
2242
2232
  <span class="cstat-no" title="statement not covered" > delete sort?.[sortColumn]</span>
2243
2233
  }
2244
2234
  }
2245
- filters = buildFilters(id, filters || {}, table)
2246
- const relationships = this.buildRelationships(table)
2235
+ <span class="cstat-no" title="statement not covered" > filters = buildFilters(id, filters || {}, table)</span>
2236
+ const relationships = <span class="cstat-no" title="statement not covered" >this.buildRelationships(table)</span>
2247
2237
  // clean up row on ingress using schema
2248
- const processed = this.inputProcessing(row, table)
2249
- row = processed.row
2250
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
2238
+ const processed = <span class="cstat-no" title="statement not covered" >this.inputProcessing(row, table)</span>
2239
+ <span class="cstat-no" title="statement not covered" > row = processed.row</span>
2240
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
2251
2241
  operation === Operation.DELETE &amp;&amp;
2252
2242
  (filters == null || Object.keys(filters).length === 0)
2253
2243
  ) {
2254
2244
  <span class="cstat-no" title="statement not covered" > throw "Deletion must be filtered"</span>
2255
2245
  }
2256
- let json = {
2246
+ let json = <span class="cstat-no" title="statement not covered" >{</span>
2257
2247
  endpoint: {
2258
2248
  datasourceId,
2259
2249
  entityId: tableName,
@@ -2261,9 +2251,7 @@ export class ExternalRequest {
2261
2251
  },
2262
2252
  resource: {
2263
2253
  // have to specify the fields to avoid column overlap (for SQL)
2264
- fields: isSql
2265
- ? this.buildFields(table, config.includeSqlRelationships)
2266
- : <span class="branch-1 cbranch-no" title="branch not covered" >[],</span>
2254
+ fields: isSql ? this.buildFields(table) : [],
2267
2255
  },
2268
2256
  filters,
2269
2257
  sort,
@@ -2279,18 +2267,18 @@ export class ExternalRequest {
2279
2267
  },
2280
2268
  }
2281
2269
  // can't really use response right now
2282
- const response = await getDatasourceAndQuery(json)
2270
+ const response = <span class="cstat-no" title="statement not covered" >await getDatasourceAndQuery(json)</span>
2283
2271
  // handle many to many relationships now if we know the ID (could be auto increment)
2284
- if (operation !== Operation.READ &amp;&amp; processed.manyRelationships) {
2285
- await this.handleManyRelationships(
2286
- table._id || <span class="branch-1 cbranch-no" title="branch not covered" >"",</span>
2272
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operation !== Operation.READ &amp;&amp; processed.manyRelationships) {</span>
2273
+ <span class="cstat-no" title="statement not covered" > await this.handleManyRelationships(</span>
2274
+ table._id || "",
2287
2275
  response[0],
2288
2276
  processed.manyRelationships
2289
2277
  )
2290
2278
  }
2291
- const output = this.outputProcessing(response, table, relationships)
2279
+ const output = <span class="cstat-no" title="statement not covered" >this.outputProcessing(response, table, relationships)</span>
2292
2280
  // if reading it'll just be an array of rows, return whole thing
2293
- return operation === Operation.READ &amp;&amp; Array.isArray(response)
2281
+ <span class="cstat-no" title="statement not covered" > return operation === Operation.READ &amp;&amp; Array.isArray(response)</span>
2294
2282
  ? output
2295
2283
  : { row: output[0], table }
2296
2284
  }
@@ -2302,7 +2290,7 @@ export class ExternalRequest {
2302
2290
  <div class='footer quiet pad2 space-top1 center small'>
2303
2291
  Code coverage generated by
2304
2292
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2305
- at Tue Feb 07 2023 16:00:57 GMT+0000 (Coordinated Universal Time)
2293
+ at Tue Feb 07 2023 16:10:30 GMT+0000 (Coordinated Universal Time)
2306
2294
  </div>
2307
2295
  <script src="../../../../prettify.js"></script>
2308
2296
  <script>