@budibase/server 1.0.19-alpha.1 → 1.0.22

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 (227) hide show
  1. package/__mocks__/node-fetch.ts +0 -3
  2. package/builder/assets/{index.2fc6da87.css → index.4fb3f887.css} +1 -1
  3. package/builder/assets/index.91de2761.js +1316 -0
  4. package/builder/assets/{vendor.a9288856.js → vendor.470042a4.js} +1 -1
  5. package/builder/index.html +3 -3
  6. package/coverage/clover.xml +372 -440
  7. package/coverage/coverage-final.json +16 -17
  8. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/datasource.js.html +14 -14
  17. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/index.html +38 -23
  20. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/{query/index.js.html → query.js.html} +27 -159
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/user.js.html +9 -108
  42. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/webhook.js.html +6 -18
  48. package/coverage/lcov-report/api/index.html +1 -1
  49. package/coverage/lcov-report/api/index.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/index.html +9 -9
  63. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/query.js.html +98 -11
  69. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/user.js.html +2 -32
  78. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  80. package/coverage/lcov-report/automations/actions.js.html +1 -1
  81. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  82. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  83. package/coverage/lcov-report/automations/index.html +1 -1
  84. package/coverage/lcov-report/automations/index.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/index.html +1 -1
  94. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  112. package/coverage/lcov-report/automations/utils.js.html +1 -1
  113. package/coverage/lcov-report/constants/index.html +1 -1
  114. package/coverage/lcov-report/constants/index.js.html +22 -22
  115. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  116. package/coverage/lcov-report/constants/screens.js.html +1 -1
  117. package/coverage/lcov-report/db/client.js.html +18 -18
  118. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  119. package/coverage/lcov-report/db/index.html +15 -15
  120. package/coverage/lcov-report/db/index.js.html +3 -3
  121. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  125. package/coverage/lcov-report/db/newid.js.html +4 -4
  126. package/coverage/lcov-report/db/utils.js.html +64 -91
  127. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  128. package/coverage/lcov-report/events/index.html +1 -1
  129. package/coverage/lcov-report/events/index.js.html +1 -1
  130. package/coverage/lcov-report/events/utils.js.html +1 -1
  131. package/coverage/lcov-report/index.html +52 -67
  132. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  133. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  134. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  135. package/coverage/lcov-report/middleware/authorized.js.html +2 -2
  136. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  137. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  138. package/coverage/lcov-report/middleware/index.html +1 -1
  139. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  140. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  141. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  142. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  143. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  144. package/coverage/lcov-report/threads/automation.js.html +1 -1
  145. package/coverage/lcov-report/threads/index.html +20 -20
  146. package/coverage/lcov-report/threads/index.js.html +1 -1
  147. package/coverage/lcov-report/threads/query.js.html +12 -63
  148. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  149. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  150. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  151. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  152. package/coverage/lcov-report/utilities/global.js.html +1 -1
  153. package/coverage/lcov-report/utilities/index.html +19 -19
  154. package/coverage/lcov-report/utilities/index.js.html +33 -66
  155. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  156. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  157. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  158. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  159. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  160. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  161. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  162. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  163. package/coverage/lcov-report/utilities/security.js.html +2 -2
  164. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  165. package/coverage/lcov-report/utilities/users.js.html +1 -1
  166. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  167. package/coverage/lcov.info +583 -688
  168. package/dist/api/controllers/{query/index.js → query.js} +6 -42
  169. package/dist/api/controllers/user.js +1 -37
  170. package/dist/api/controllers/webhook.js +0 -4
  171. package/dist/api/routes/query.js +32 -2
  172. package/dist/api/routes/user.js +1 -3
  173. package/dist/db/utils.js +0 -8
  174. package/dist/integrations/rest.js +113 -110
  175. package/dist/package.json +4 -8
  176. package/dist/threads/query.js +2 -14
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/dist/utilities/index.js +0 -10
  179. package/package.json +5 -9
  180. package/src/api/controllers/{query/index.js → query.js} +6 -50
  181. package/src/api/controllers/user.js +0 -33
  182. package/src/api/controllers/webhook.js +0 -4
  183. package/src/api/routes/query.js +34 -5
  184. package/src/api/routes/user.js +0 -10
  185. package/src/db/utils.js +0 -9
  186. package/src/definitions/common.ts +16 -2
  187. package/src/definitions/datasource.ts +1 -50
  188. package/src/integrations/base/IntegrationBase.ts +4 -4
  189. package/src/integrations/oracle.ts +1 -1
  190. package/src/integrations/rest.ts +137 -111
  191. package/src/integrations/tests/rest.spec.js +7 -16
  192. package/src/threads/query.js +2 -19
  193. package/src/utilities/index.js +0 -11
  194. package/builder/assets/bb-spaceship.8f6e81e1.svg +0 -227
  195. package/builder/assets/index.b0718f41.js +0 -1320
  196. package/coverage/lcov-report/api/controllers/query/index.html +0 -126
  197. package/coverage/lcov-report/api/controllers/query/validation.js.html +0 -203
  198. package/dist/api/controllers/query/import/index.js +0 -79
  199. package/dist/api/controllers/query/import/sources/base/index.js +0 -63
  200. package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
  201. package/dist/api/controllers/query/import/sources/curl.js +0 -90
  202. package/dist/api/controllers/query/import/sources/openapi2.js +0 -139
  203. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  204. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  205. package/dist/api/controllers/query/validation.js +0 -37
  206. package/src/api/controllers/query/import/index.ts +0 -85
  207. package/src/api/controllers/query/import/sources/base/index.ts +0 -85
  208. package/src/api/controllers/query/import/sources/base/openapi.ts +0 -24
  209. package/src/api/controllers/query/import/sources/curl.ts +0 -94
  210. package/src/api/controllers/query/import/sources/openapi2.ts +0 -159
  211. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +0 -104
  212. package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +0 -1
  213. package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +0 -2
  214. package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +0 -1
  215. package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +0 -3
  216. package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +0 -2
  217. package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +0 -1
  218. package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +0 -2
  219. package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +0 -2
  220. package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +0 -1
  221. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  222. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +0 -160
  223. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  224. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +0 -711
  225. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +0 -239
  226. package/src/api/controllers/query/import/tests/index.spec.js +0 -115
  227. package/src/api/controllers/query/validation.js +0 -41
@@ -1,126 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for api/controllers/query</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> api/controllers/query</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">73.95% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>71/96</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">44.44% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>12/27</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">92.3% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>12/13</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">73.68% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>70/95</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- </div>
58
- <div class='status-line medium'></div>
59
- <div class="pad1">
60
- <table class="coverage-summary">
61
- <thead>
62
- <tr>
63
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
64
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
65
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
66
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
67
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
68
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
69
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
70
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
71
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
72
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
73
- </tr>
74
- </thead>
75
- <tbody><tr>
76
- <td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
77
- <td data-value="71.59" class="pic medium">
78
- <div class="chart"><div class="cover-fill" style="width: 71%"></div><div class="cover-empty" style="width: 29%"></div></div>
79
- </td>
80
- <td data-value="71.59" class="pct medium">71.59%</td>
81
- <td data-value="88" class="abs medium">63/88</td>
82
- <td data-value="44.44" class="pct low">44.44%</td>
83
- <td data-value="27" class="abs low">12/27</td>
84
- <td data-value="90" class="pct high">90%</td>
85
- <td data-value="10" class="abs high">9/10</td>
86
- <td data-value="71.26" class="pct medium">71.26%</td>
87
- <td data-value="87" class="abs medium">62/87</td>
88
- </tr>
89
-
90
- <tr>
91
- <td class="file high" data-value="validation.js"><a href="validation.js.html">validation.js</a></td>
92
- <td data-value="100" class="pic high">
93
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
94
- </td>
95
- <td data-value="100" class="pct high">100%</td>
96
- <td data-value="8" class="abs high">8/8</td>
97
- <td data-value="100" class="pct high">100%</td>
98
- <td data-value="0" class="abs high">0/0</td>
99
- <td data-value="100" class="pct high">100%</td>
100
- <td data-value="3" class="abs high">3/3</td>
101
- <td data-value="100" class="pct high">100%</td>
102
- <td data-value="8" class="abs high">8/8</td>
103
- </tr>
104
-
105
- </tbody>
106
- </table>
107
- </div>
108
- <div class='push'></div><!-- for sticky footer -->
109
- </div><!-- /wrapper -->
110
- <div class='footer quiet pad2 space-top1 center small'>
111
- Code coverage generated by
112
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
113
- at Mon Dec 13 2021 17:43:19 GMT+0000 (Coordinated Universal Time)
114
- </div>
115
- </div>
116
- <script src="../../../prettify.js"></script>
117
- <script>
118
- window.onload = function () {
119
- prettyPrint();
120
- };
121
- </script>
122
- <script src="../../../sorter.js"></script>
123
- <script src="../../../block-navigation.js"></script>
124
- </body>
125
- </html>
126
-
@@ -1,203 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for api/controllers/query/validation.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">api/controllers/query</a> validation.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>8/8</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>3/3</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>8/8</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- </div>
58
- <div class='status-line high'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">35x</span>
102
- <span class="cline-any cline-yes">35x</span>
103
- <span class="cline-any cline-neutral">&nbsp;</span>
104
- <span class="cline-any cline-yes">35x</span>
105
- <span class="cline-any cline-yes">28x</span>
106
- <span class="cline-any cline-neutral">&nbsp;</span>
107
- <span class="cline-any cline-neutral">&nbsp;</span>
108
- <span class="cline-any cline-neutral">&nbsp;</span>
109
- <span class="cline-any cline-neutral">&nbsp;</span>
110
- <span class="cline-any cline-neutral">&nbsp;</span>
111
- <span class="cline-any cline-neutral">&nbsp;</span>
112
- <span class="cline-any cline-neutral">&nbsp;</span>
113
- <span class="cline-any cline-neutral">&nbsp;</span>
114
- <span class="cline-any cline-neutral">&nbsp;</span>
115
- <span class="cline-any cline-neutral">&nbsp;</span>
116
- <span class="cline-any cline-neutral">&nbsp;</span>
117
- <span class="cline-any cline-neutral">&nbsp;</span>
118
- <span class="cline-any cline-neutral">&nbsp;</span>
119
- <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-neutral">&nbsp;</span>
121
- <span class="cline-any cline-neutral">&nbsp;</span>
122
- <span class="cline-any cline-neutral">&nbsp;</span>
123
- <span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-yes">35x</span>
127
- <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-yes">23x</span>
129
- <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-yes">35x</span>
132
- <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-yes">23x</span>
134
- <span class="cline-any cline-neutral">&nbsp;</span>
135
- <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-neutral">&nbsp;</span>
137
- <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const joiValidator = require("../../../middleware/joi-validator")
143
- const Joi = require("joi")
144
- &nbsp;
145
- exports.queryValidation = () =&gt; {
146
- return Joi.object({
147
- _id: Joi.string(),
148
- _rev: Joi.string(),
149
- name: Joi.string().required(),
150
- fields: Joi.object().required(),
151
- datasourceId: Joi.string().required(),
152
- readable: Joi.boolean(),
153
- parameters: Joi.array().items(
154
- Joi.object({
155
- name: Joi.string(),
156
- default: Joi.string().allow(""),
157
- })
158
- ),
159
- queryVerb: Joi.string().allow().required(),
160
- extra: Joi.object().optional(),
161
- schema: Joi.object({}).required().unknown(true),
162
- transformer: Joi.string().optional(),
163
- flags: Joi.object().optional(),
164
- })
165
- }
166
- &nbsp;
167
- exports.generateQueryValidation = () =&gt; {
168
- // prettier-ignore
169
- return joiValidator.body(exports.queryValidation())
170
- }
171
- &nbsp;
172
- exports.generateQueryPreviewValidation = () =&gt; {
173
- // prettier-ignore
174
- return joiValidator.body(Joi.object({
175
- fields: Joi.object().required(),
176
- queryVerb: Joi.string().allow().required(),
177
- extra: Joi.object().optional(),
178
- datasourceId: Joi.string().required(),
179
- transformer: Joi.string().optional(),
180
- parameters: Joi.object({}).required().unknown(true)
181
- }))
182
- }
183
- &nbsp;</pre></td></tr></table></pre>
184
-
185
- <div class='push'></div><!-- for sticky footer -->
186
- </div><!-- /wrapper -->
187
- <div class='footer quiet pad2 space-top1 center small'>
188
- Code coverage generated by
189
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
190
- at Mon Dec 13 2021 17:43:19 GMT+0000 (Coordinated Universal Time)
191
- </div>
192
- </div>
193
- <script src="../../../prettify.js"></script>
194
- <script>
195
- window.onload = function () {
196
- prettyPrint();
197
- };
198
- </script>
199
- <script src="../../../sorter.js"></script>
200
- <script src="../../../block-navigation.js"></script>
201
- </body>
202
- </html>
203
-
@@ -1,79 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.RestImporter = void 0;
16
- const db_1 = __importDefault(require("../../../../db"));
17
- const validation_1 = require("../validation");
18
- const utils_1 = require("../../../../db/utils");
19
- const openapi2_1 = require("./sources/openapi2");
20
- const curl_1 = require("./sources/curl");
21
- class RestImporter {
22
- constructor(data) {
23
- this.init = () => __awaiter(this, void 0, void 0, function* () {
24
- for (let source of this.sources) {
25
- if (yield source.isSupported(this.data)) {
26
- this.source = source;
27
- break;
28
- }
29
- }
30
- });
31
- this.getInfo = () => __awaiter(this, void 0, void 0, function* () {
32
- return this.source.getInfo();
33
- });
34
- this.importQueries = (appId, datasourceId) => __awaiter(this, void 0, void 0, function* () {
35
- // constuct the queries
36
- let queries = yield this.source.getQueries(datasourceId);
37
- // validate queries
38
- const errorQueries = [];
39
- const schema = validation_1.queryValidation();
40
- queries = queries
41
- .filter(query => {
42
- const validation = schema.validate(query);
43
- if (validation.error) {
44
- errorQueries.push(query);
45
- return false;
46
- }
47
- return true;
48
- })
49
- .map(query => {
50
- query._id = utils_1.generateQueryID(query.datasourceId);
51
- return query;
52
- });
53
- // persist queries
54
- const db = new db_1.default(appId);
55
- const response = yield db.bulkDocs(queries);
56
- // create index to seperate queries and errors
57
- const queryIndex = queries.reduce((acc, query) => {
58
- if (query._id) {
59
- acc[query._id] = query;
60
- }
61
- return acc;
62
- }, {});
63
- // check for failed writes
64
- response.forEach((query) => {
65
- if (!query.ok) {
66
- errorQueries.push(queryIndex[query.id]);
67
- delete queryIndex[query.id];
68
- }
69
- });
70
- return {
71
- errorQueries,
72
- queries: Object.values(queryIndex),
73
- };
74
- });
75
- this.data = data;
76
- this.sources = [new openapi2_1.OpenAPI2(), new curl_1.Curl()];
77
- }
78
- }
79
- exports.RestImporter = RestImporter;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ImportSource = void 0;
4
- var MethodToVerb;
5
- (function (MethodToVerb) {
6
- MethodToVerb["get"] = "read";
7
- MethodToVerb["post"] = "create";
8
- MethodToVerb["put"] = "update";
9
- MethodToVerb["patch"] = "patch";
10
- MethodToVerb["delete"] = "delete";
11
- })(MethodToVerb || (MethodToVerb = {}));
12
- class ImportSource {
13
- constructor() {
14
- this.constructQuery = (datasourceId, name, method, path, queryString, headers = {}, parameters = [], body = undefined) => {
15
- const readable = true;
16
- const queryVerb = this.verbFromMethod(method);
17
- const transformer = "return data";
18
- const schema = {};
19
- path = this.processPath(path);
20
- queryString = this.processQuery(queryString);
21
- const requestBody = JSON.stringify(body, null, 2);
22
- const query = {
23
- datasourceId,
24
- name,
25
- parameters,
26
- fields: {
27
- headers,
28
- queryString,
29
- path,
30
- requestBody,
31
- },
32
- transformer,
33
- schema,
34
- readable,
35
- queryVerb,
36
- };
37
- return query;
38
- };
39
- this.verbFromMethod = (method) => {
40
- const verb = MethodToVerb[method];
41
- if (!verb) {
42
- throw new Error(`Unsupported method: ${method}`);
43
- }
44
- return verb;
45
- };
46
- this.processPath = (path) => {
47
- if (path === null || path === void 0 ? void 0 : path.startsWith("/")) {
48
- path = path.substring(1);
49
- }
50
- // add extra braces around params for binding
51
- path = path.replace(/[{]/g, "{{");
52
- path = path.replace(/[}]/g, "}}");
53
- return path;
54
- };
55
- this.processQuery = (queryString) => {
56
- if (queryString === null || queryString === void 0 ? void 0 : queryString.startsWith("?")) {
57
- return queryString.substring(1);
58
- }
59
- return queryString;
60
- };
61
- }
62
- }
63
- exports.ImportSource = ImportSource;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.OpenAPISource = void 0;
16
- const _1 = require(".");
17
- const swagger_parser_1 = __importDefault(require("@apidevtools/swagger-parser"));
18
- const yaml = require("js-yaml");
19
- class OpenAPISource extends _1.ImportSource {
20
- constructor() {
21
- super(...arguments);
22
- this.parseData = (data) => __awaiter(this, void 0, void 0, function* () {
23
- let json;
24
- try {
25
- json = JSON.parse(data);
26
- }
27
- catch (jsonErr) {
28
- // couldn't parse json
29
- // try to convert yaml -> json
30
- try {
31
- json = yaml.load(data);
32
- }
33
- catch (yamlErr) {
34
- // couldn't parse yaml
35
- throw new Error("Could not parse JSON or YAML");
36
- }
37
- }
38
- return swagger_parser_1.default.validate(json, {});
39
- });
40
- }
41
- }
42
- exports.OpenAPISource = OpenAPISource;
@@ -1,90 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Curl = void 0;
13
- const base_1 = require("./base");
14
- const url_1 = require("url");
15
- const curlconverter = require("curlconverter");
16
- const parseCurl = (data) => {
17
- const curlJson = curlconverter.toJsonString(data);
18
- return JSON.parse(curlJson);
19
- };
20
- /**
21
- * The curl converter parses the request body into the key field of an object
22
- * e.g. --d '{"key":"val"}' produces an object { "{"key":"val"}" : "" }
23
- * This is not what we want, so we need to parse out the key from the object
24
- */
25
- const parseBody = (curl) => {
26
- if (curl.data) {
27
- const keys = Object.keys(curl.data);
28
- if (keys.length) {
29
- const key = keys[0];
30
- try {
31
- return JSON.parse(key);
32
- }
33
- catch (e) {
34
- // do nothing
35
- }
36
- }
37
- }
38
- return undefined;
39
- };
40
- const parseCookie = (curl) => {
41
- if (curl.cookies) {
42
- return Object.entries(curl.cookies).reduce((acc, entry) => {
43
- const [key, value] = entry;
44
- return acc + `${key}=${value}; `;
45
- }, "");
46
- }
47
- return null;
48
- };
49
- /**
50
- * Curl
51
- * https://curl.se/docs/manpage.html
52
- */
53
- class Curl extends base_1.ImportSource {
54
- constructor() {
55
- super(...arguments);
56
- this.isSupported = (data) => __awaiter(this, void 0, void 0, function* () {
57
- try {
58
- const curl = parseCurl(data);
59
- this.curl = curl;
60
- }
61
- catch (err) {
62
- return false;
63
- }
64
- return true;
65
- });
66
- this.getInfo = () => __awaiter(this, void 0, void 0, function* () {
67
- const url = new url_1.URL(this.curl.url);
68
- return {
69
- url: url.origin,
70
- name: url.hostname,
71
- };
72
- });
73
- this.getQueries = (datasourceId) => __awaiter(this, void 0, void 0, function* () {
74
- const url = new url_1.URL(this.curl.raw_url);
75
- const name = url.pathname;
76
- const path = url.pathname;
77
- const method = this.curl.method;
78
- const queryString = url.search;
79
- const headers = this.curl.headers;
80
- const requestBody = parseBody(this.curl);
81
- const cookieHeader = parseCookie(this.curl);
82
- if (cookieHeader) {
83
- headers["Cookie"] = cookieHeader;
84
- }
85
- const query = this.constructQuery(datasourceId, name, method, path, queryString, headers, [], requestBody);
86
- return [query];
87
- });
88
- }
89
- }
90
- exports.Curl = Curl;