@budibase/server 1.0.8-alpha.2 → 1.0.9

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 (207) hide show
  1. package/builder/assets/{index.db2ce927.js → index.11328f83.js} +164 -164
  2. package/builder/assets/{index.9337c392.css → index.4fb3f887.css} +1 -1
  3. package/builder/assets/{vendor.a9288856.js → vendor.470042a4.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +162 -191
  6. package/coverage/coverage-final.json +7 -8
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +14 -14
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/index.html +24 -9
  19. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/{query/index.js.html → query.js.html} +24 -150
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/index.html +9 -9
  62. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/query.js.html +98 -11
  68. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  79. package/coverage/lcov-report/automations/actions.js.html +1 -1
  80. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  81. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  82. package/coverage/lcov-report/automations/index.html +1 -1
  83. package/coverage/lcov-report/automations/index.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/index.html +1 -1
  93. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  111. package/coverage/lcov-report/automations/utils.js.html +1 -1
  112. package/coverage/lcov-report/constants/index.html +1 -1
  113. package/coverage/lcov-report/constants/index.js.html +1 -1
  114. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  115. package/coverage/lcov-report/constants/screens.js.html +1 -1
  116. package/coverage/lcov-report/db/client.js.html +1 -1
  117. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  118. package/coverage/lcov-report/db/index.html +1 -1
  119. package/coverage/lcov-report/db/index.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  124. package/coverage/lcov-report/db/newid.js.html +4 -4
  125. package/coverage/lcov-report/db/utils.js.html +58 -58
  126. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  127. package/coverage/lcov-report/events/index.html +1 -1
  128. package/coverage/lcov-report/events/index.js.html +1 -1
  129. package/coverage/lcov-report/events/utils.js.html +1 -1
  130. package/coverage/lcov-report/index.html +25 -40
  131. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  132. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  133. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  134. package/coverage/lcov-report/middleware/authorized.js.html +2 -2
  135. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  136. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  137. package/coverage/lcov-report/middleware/index.html +1 -1
  138. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  139. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  140. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  141. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  142. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  143. package/coverage/lcov-report/threads/automation.js.html +1 -1
  144. package/coverage/lcov-report/threads/index.html +1 -1
  145. package/coverage/lcov-report/threads/index.js.html +1 -1
  146. package/coverage/lcov-report/threads/query.js.html +1 -1
  147. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  148. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  149. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  150. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  151. package/coverage/lcov-report/utilities/global.js.html +1 -1
  152. package/coverage/lcov-report/utilities/index.html +1 -1
  153. package/coverage/lcov-report/utilities/index.js.html +1 -1
  154. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  155. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  156. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  157. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  158. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  159. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  160. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  161. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  162. package/coverage/lcov-report/utilities/security.js.html +1 -1
  163. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  164. package/coverage/lcov-report/utilities/users.js.html +1 -1
  165. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  166. package/coverage/lcov.info +217 -255
  167. package/dist/api/controllers/{query/index.js → query.js} +4 -38
  168. package/dist/api/routes/query.js +32 -2
  169. package/dist/package.json +4 -8
  170. package/dist/tsconfig.tsbuildinfo +1 -1
  171. package/package.json +5 -9
  172. package/src/api/controllers/{query/index.js → query.js} +4 -46
  173. package/src/api/routes/query.js +34 -5
  174. package/src/definitions/common.ts +0 -22
  175. package/src/integrations/oracle.ts +1 -1
  176. package/coverage/lcov-report/api/controllers/query/index.html +0 -126
  177. package/coverage/lcov-report/api/controllers/query/validation.js.html +0 -200
  178. package/dist/api/controllers/query/import/index.js +0 -79
  179. package/dist/api/controllers/query/import/sources/base/index.js +0 -63
  180. package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
  181. package/dist/api/controllers/query/import/sources/curl.js +0 -90
  182. package/dist/api/controllers/query/import/sources/openapi2.js +0 -139
  183. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  184. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  185. package/dist/api/controllers/query/validation.js +0 -36
  186. package/src/api/controllers/query/import/index.ts +0 -85
  187. package/src/api/controllers/query/import/sources/base/index.ts +0 -86
  188. package/src/api/controllers/query/import/sources/base/openapi.ts +0 -24
  189. package/src/api/controllers/query/import/sources/curl.ts +0 -94
  190. package/src/api/controllers/query/import/sources/openapi2.ts +0 -159
  191. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +0 -104
  192. package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +0 -1
  193. package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +0 -2
  194. package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +0 -1
  195. package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +0 -3
  196. package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +0 -2
  197. package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +0 -1
  198. package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +0 -2
  199. package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +0 -2
  200. package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +0 -1
  201. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  202. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +0 -160
  203. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  204. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +0 -711
  205. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +0 -239
  206. package/src/api/controllers/query/import/tests/index.spec.js +0 -115
  207. package/src/api/controllers/query/validation.js +0 -40
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>9/9</span>
28
+ <span class='fraction'>12/12</span>
29
29
  </div>
30
30
 
31
31
 
@@ -39,14 +39,14 @@
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/0</span>
42
+ <span class='fraction'>2/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>9/9</span>
49
+ <span class='fraction'>12/12</span>
50
50
  </div>
51
51
 
52
52
 
@@ -114,7 +114,37 @@
114
114
  <a name='L55'></a><a href='#L55'>55</a>
115
115
  <a name='L56'></a><a href='#L56'>56</a>
116
116
  <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a>
119
+ <a name='L60'></a><a href='#L60'>60</a>
120
+ <a name='L61'></a><a href='#L61'>61</a>
121
+ <a name='L62'></a><a href='#L62'>62</a>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
147
+ <span class="cline-any cline-yes">23x</span>
118
148
  <span class="cline-any cline-yes">23x</span>
119
149
  <span class="cline-any cline-yes">23x</span>
120
150
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -122,18 +152,37 @@
122
152
  <span class="cline-any cline-neutral">&nbsp;</span>
123
153
  <span class="cline-any cline-neutral">&nbsp;</span>
124
154
  <span class="cline-any cline-yes">23x</span>
155
+ <span class="cline-any cline-yes">23x</span>
125
156
  <span class="cline-any cline-neutral">&nbsp;</span>
126
157
  <span class="cline-any cline-neutral">&nbsp;</span>
127
158
  <span class="cline-any cline-neutral">&nbsp;</span>
128
159
  <span class="cline-any cline-neutral">&nbsp;</span>
129
160
  <span class="cline-any cline-yes">23x</span>
130
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-yes">23x</span>
131
163
  <span class="cline-any cline-neutral">&nbsp;</span>
132
164
  <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-yes">23x</span>
134
165
  <span class="cline-any cline-neutral">&nbsp;</span>
135
166
  <span class="cline-any cline-yes">23x</span>
136
167
  <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-neutral">&nbsp;</span>
169
+ <span class="cline-any cline-neutral">&nbsp;</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
+ <span class="cline-any cline-neutral">&nbsp;</span>
175
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-neutral">&nbsp;</span>
177
+ <span class="cline-any cline-neutral">&nbsp;</span>
178
+ <span class="cline-any cline-neutral">&nbsp;</span>
179
+ <span class="cline-any cline-neutral">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-neutral">&nbsp;</span>
183
+ <span class="cline-any cline-neutral">&nbsp;</span>
184
+ <span class="cline-any cline-neutral">&nbsp;</span>
185
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
186
  <span class="cline-any cline-yes">23x</span>
138
187
  <span class="cline-any cline-neutral">&nbsp;</span>
139
188
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -144,6 +193,15 @@
144
193
  <span class="cline-any cline-neutral">&nbsp;</span>
145
194
  <span class="cline-any cline-neutral">&nbsp;</span>
146
195
  <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-yes">23x</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-neutral">&nbsp;</span>
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
204
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
205
  <span class="cline-any cline-neutral">&nbsp;</span>
148
206
  <span class="cline-any cline-neutral">&nbsp;</span>
149
207
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -174,23 +232,53 @@
174
232
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
175
233
  const queryController = require("../controllers/query")
176
234
  const authorized = require("../../middleware/authorized")
235
+ const Joi = require("joi")
177
236
  const {
178
237
  PermissionLevels,
179
238
  PermissionTypes,
180
239
  BUILDER,
181
240
  } = require("@budibase/auth/permissions")
241
+ const joiValidator = require("../../middleware/joi-validator")
182
242
  const {
183
243
  bodyResource,
184
244
  bodySubResource,
185
245
  paramResource,
186
246
  } = require("../../middleware/resourceId")
187
- const {
188
- generateQueryPreviewValidation,
189
- generateQueryValidation,
190
- } = require("../controllers/query/validation")
191
247
  &nbsp;
192
248
  const router = Router()
193
249
  &nbsp;
250
+ function generateQueryValidation() {
251
+ // prettier-ignore
252
+ return joiValidator.body(Joi.object({
253
+ _id: Joi.string(),
254
+ _rev: Joi.string(),
255
+ name: Joi.string().required(),
256
+ fields: Joi.object().required(),
257
+ datasourceId: Joi.string().required(),
258
+ readable: Joi.boolean(),
259
+ parameters: Joi.array().items(Joi.object({
260
+ name: Joi.string(),
261
+ default: Joi.string().allow(""),
262
+ })),
263
+ queryVerb: Joi.string().allow().required(),
264
+ extra: Joi.object().optional(),
265
+ schema: Joi.object({}).required().unknown(true),
266
+ transformer: Joi.string().optional(),
267
+ }))
268
+ }
269
+ &nbsp;
270
+ function generateQueryPreviewValidation() {
271
+ // prettier-ignore
272
+ return joiValidator.body(Joi.object({
273
+ fields: Joi.object().required(),
274
+ queryVerb: Joi.string().allow().required(),
275
+ extra: Joi.object().optional(),
276
+ datasourceId: Joi.string().required(),
277
+ transformer: Joi.string().optional(),
278
+ parameters: Joi.object({}).required().unknown(true)
279
+ }))
280
+ }
281
+ &nbsp;
194
282
  router
195
283
  .get("/api/queries", authorized(BUILDER), queryController.fetch)
196
284
  .post(
@@ -200,7 +288,6 @@ router
200
288
  generateQueryValidation(),
201
289
  queryController.save
202
290
  )
203
- .post("/api/queries/import", authorized(BUILDER), queryController.import)
204
291
  .post(
205
292
  "/api/queries/preview",
206
293
  bodyResource("datasourceId"),
@@ -235,7 +322,7 @@ module.exports = router
235
322
  <div class='footer quiet pad2 space-top1 center small'>
236
323
  Code coverage generated by
237
324
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
238
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
325
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
239
326
  </div>
240
327
  </div>
241
328
  <script src="../../prettify.js"></script>
@@ -172,7 +172,7 @@ module.exports = router
172
172
  <div class='footer quiet pad2 space-top1 center small'>
173
173
  Code coverage generated by
174
174
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
175
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
175
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
176
176
  </div>
177
177
  </div>
178
178
  <script src="../../prettify.js"></script>
@@ -106,7 +106,7 @@ module.exports = router
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
109
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
109
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
110
110
  </div>
111
111
  </div>
112
112
  <script src="../../prettify.js"></script>
@@ -826,7 +826,7 @@ module.exports = router
826
826
  <div class='footer quiet pad2 space-top1 center small'>
827
827
  Code coverage generated by
828
828
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
829
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
829
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
830
830
  </div>
831
831
  </div>
832
832
  <script src="../../prettify.js"></script>
@@ -199,7 +199,7 @@ module.exports = router
199
199
  <div class='footer quiet pad2 space-top1 center small'>
200
200
  Code coverage generated by
201
201
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
202
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
202
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
203
203
  </div>
204
204
  </div>
205
205
  <script src="../../prettify.js"></script>
@@ -94,7 +94,7 @@ const router = <span class="cstat-no" title="statement not covered" >Router()</s
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
97
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../../prettify.js"></script>
@@ -214,7 +214,7 @@ module.exports = router
214
214
  <div class='footer quiet pad2 space-top1 center small'>
215
215
  Code coverage generated by
216
216
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
217
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
217
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
218
218
  </div>
219
219
  </div>
220
220
  <script src="../../prettify.js"></script>
@@ -697,7 +697,7 @@ module.exports = router
697
697
  <div class='footer quiet pad2 space-top1 center small'>
698
698
  Code coverage generated by
699
699
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
700
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
700
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
701
701
  </div>
702
702
  </div>
703
703
  <script src="../../prettify.js"></script>
@@ -112,7 +112,7 @@ module.exports = router
112
112
  <div class='footer quiet pad2 space-top1 center small'>
113
113
  Code coverage generated by
114
114
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
115
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
115
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
116
116
  </div>
117
117
  </div>
118
118
  <script src="../../prettify.js"></script>
@@ -193,7 +193,7 @@ module.exports = router
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
196
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
196
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
197
197
  </div>
198
198
  </div>
199
199
  <script src="../../prettify.js"></script>
@@ -157,7 +157,7 @@ module.exports = router
157
157
  <div class='footer quiet pad2 space-top1 center small'>
158
158
  Code coverage generated by
159
159
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
160
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
160
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
161
161
  </div>
162
162
  </div>
163
163
  <script src="../../prettify.js"></script>
@@ -190,7 +190,7 @@ module.exports = router
190
190
  <div class='footer quiet pad2 space-top1 center small'>
191
191
  Code coverage generated by
192
192
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
193
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
193
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
194
194
  </div>
195
195
  </div>
196
196
  <script src="../../prettify.js"></script>
@@ -277,7 +277,7 @@ exports.ACTION_DEFINITIONS = ACTION_DEFINITIONS
277
277
  <div class='footer quiet pad2 space-top1 center small'>
278
278
  Code coverage generated by
279
279
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
280
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
280
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
281
281
  </div>
282
282
  </div>
283
283
  <script src="../prettify.js"></script>
@@ -295,7 +295,7 @@ exports.getError = err =&gt; {
295
295
  <div class='footer quiet pad2 space-top1 center small'>
296
296
  Code coverage generated by
297
297
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
298
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
298
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
299
299
  </div>
300
300
  </div>
301
301
  <script src="../prettify.js"></script>
@@ -208,7 +208,7 @@ exports.queue = automationQueue
208
208
  <div class='footer quiet pad2 space-top1 center small'>
209
209
  Code coverage generated by
210
210
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
211
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
211
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
212
212
  </div>
213
213
  </div>
214
214
  <script src="../prettify.js"></script>
@@ -170,7 +170,7 @@
170
170
  <div class='footer quiet pad2 space-top1 center small'>
171
171
  Code coverage generated by
172
172
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
173
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
173
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
174
174
  </div>
175
175
  </div>
176
176
  <script src="../prettify.js"></script>
@@ -115,7 +115,7 @@ exports.queue = queue
115
115
  <div class='footer quiet pad2 space-top1 center small'>
116
116
  Code coverage generated by
117
117
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
118
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
118
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
119
119
  </div>
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
@@ -274,7 +274,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
274
274
  <div class='footer quiet pad2 space-top1 center small'>
275
275
  Code coverage generated by
276
276
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
277
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
277
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
278
278
  </div>
279
279
  </div>
280
280
  <script src="../../prettify.js"></script>
@@ -373,7 +373,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
373
373
  <div class='footer quiet pad2 space-top1 center small'>
374
374
  Code coverage generated by
375
375
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
376
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
376
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
377
377
  </div>
378
378
  </div>
379
379
  <script src="../../prettify.js"></script>
@@ -181,7 +181,7 @@ exports.run = async function delay({ inputs }) {
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
184
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
184
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>
@@ -340,7 +340,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
340
340
  <div class='footer quiet pad2 space-top1 center small'>
341
341
  Code coverage generated by
342
342
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
343
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
343
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
344
344
  </div>
345
345
  </div>
346
346
  <script src="../../prettify.js"></script>
@@ -313,7 +313,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
313
313
  <div class='footer quiet pad2 space-top1 center small'>
314
314
  Code coverage generated by
315
315
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
316
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
316
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
317
317
  </div>
318
318
  </div>
319
319
  <script src="../../prettify.js"></script>
@@ -307,7 +307,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
307
307
  <div class='footer quiet pad2 space-top1 center small'>
308
308
  Code coverage generated by
309
309
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
310
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
310
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
311
311
  </div>
312
312
  </div>
313
313
  <script src="../../prettify.js"></script>
@@ -274,7 +274,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
274
274
  <div class='footer quiet pad2 space-top1 center small'>
275
275
  Code coverage generated by
276
276
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
277
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
277
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
278
278
  </div>
279
279
  </div>
280
280
  <script src="../../prettify.js"></script>
@@ -337,7 +337,7 @@ exports.run = async function filter({ inputs }) {
337
337
  <div class='footer quiet pad2 space-top1 center small'>
338
338
  Code coverage generated by
339
339
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
340
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
340
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
341
341
  </div>
342
342
  </div>
343
343
  <script src="../../prettify.js"></script>
@@ -335,7 +335,7 @@
335
335
  <div class='footer quiet pad2 space-top1 center small'>
336
336
  Code coverage generated by
337
337
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
338
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
338
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
339
339
  </div>
340
340
  </div>
341
341
  <script src="../../prettify.js"></script>
@@ -325,7 +325,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
325
325
  <div class='footer quiet pad2 space-top1 center small'>
326
326
  Code coverage generated by
327
327
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
328
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
328
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
329
329
  </div>
330
330
  </div>
331
331
  <script src="../../prettify.js"></script>
@@ -466,7 +466,7 @@ exports.run = async function ({ inputs }) {
466
466
  <div class='footer quiet pad2 space-top1 center small'>
467
467
  Code coverage generated by
468
468
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
469
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
469
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
470
470
  </div>
471
471
  </div>
472
472
  <script src="../../prettify.js"></script>
@@ -415,7 +415,7 @@ exports.run = async function ({ inputs, appId }) {
415
415
  <div class='footer quiet pad2 space-top1 center small'>
416
416
  Code coverage generated by
417
417
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
418
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
418
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
419
419
  </div>
420
420
  </div>
421
421
  <script src="../../prettify.js"></script>
@@ -268,7 +268,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
268
268
  <div class='footer quiet pad2 space-top1 center small'>
269
269
  Code coverage generated by
270
270
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
271
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
271
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
272
272
  </div>
273
273
  </div>
274
274
  <script src="../../prettify.js"></script>
@@ -199,7 +199,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
199
199
  <div class='footer quiet pad2 space-top1 center small'>
200
200
  Code coverage generated by
201
201
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
202
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
202
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
203
203
  </div>
204
204
  </div>
205
205
  <script src="../../prettify.js"></script>
@@ -256,7 +256,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
256
256
  <div class='footer quiet pad2 space-top1 center small'>
257
257
  Code coverage generated by
258
258
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
259
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
259
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
260
260
  </div>
261
261
  </div>
262
262
  <script src="../../prettify.js"></script>
@@ -382,7 +382,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
382
382
  <div class='footer quiet pad2 space-top1 center small'>
383
383
  Code coverage generated by
384
384
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
385
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
385
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
386
386
  </div>
387
387
  </div>
388
388
  <script src="../../prettify.js"></script>
@@ -172,7 +172,7 @@ exports.buildCtx = (appId, emitter, { body, params } = <span class="branch-0 cbr
172
172
  <div class='footer quiet pad2 space-top1 center small'>
173
173
  Code coverage generated by
174
174
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
175
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
175
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
176
176
  </div>
177
177
  </div>
178
178
  <script src="../../prettify.js"></script>
@@ -316,7 +316,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
316
316
  <div class='footer quiet pad2 space-top1 center small'>
317
317
  Code coverage generated by
318
318
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
319
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
319
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
320
320
  </div>
321
321
  </div>
322
322
  <script src="../../prettify.js"></script>
@@ -160,7 +160,7 @@
160
160
  <div class='footer quiet pad2 space-top1 center small'>
161
161
  Code coverage generated by
162
162
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
163
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
163
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
164
164
  </div>
165
165
  </div>
166
166
  <script src="../../prettify.js"></script>
@@ -157,7 +157,7 @@
157
157
  <div class='footer quiet pad2 space-top1 center small'>
158
158
  Code coverage generated by
159
159
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
160
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
160
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
161
161
  </div>
162
162
  </div>
163
163
  <script src="../../prettify.js"></script>
@@ -185,7 +185,7 @@
185
185
  <div class='footer quiet pad2 space-top1 center small'>
186
186
  Code coverage generated by
187
187
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
188
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
188
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
189
189
  </div>
190
190
  </div>
191
191
  <script src="../../prettify.js"></script>
@@ -109,7 +109,7 @@ exports.definitions = {
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
112
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
112
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  </div>
115
115
  <script src="../../prettify.js"></script>
@@ -160,7 +160,7 @@
160
160
  <div class='footer quiet pad2 space-top1 center small'>
161
161
  Code coverage generated by
162
162
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
163
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
163
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
164
164
  </div>
165
165
  </div>
166
166
  <script src="../../prettify.js"></script>
@@ -184,7 +184,7 @@
184
184
  <div class='footer quiet pad2 space-top1 center small'>
185
185
  Code coverage generated by
186
186
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
187
- at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
187
+ at Wed Dec 08 2021 17:42:27 GMT+0000 (Coordinated Universal Time)
188
188
  </div>
189
189
  </div>
190
190
  <script src="../../prettify.js"></script>