@budibase/server 1.0.6 → 1.0.8-alpha.2

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 (212) hide show
  1. package/builder/assets/{index.4fb3f887.css → index.9337c392.css} +1 -1
  2. package/builder/assets/{index.8b07ec4f.js → index.db2ce927.js} +160 -160
  3. package/builder/assets/{vendor.470042a4.js → vendor.a9288856.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +369 -330
  6. package/coverage/coverage-final.json +11 -10
  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 +9 -24
  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.html +126 -0
  24. package/coverage/lcov-report/api/controllers/{query.js.html → query/index.js.html} +150 -24
  25. package/coverage/lcov-report/api/controllers/query/validation.js.html +200 -0
  26. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/utils.js.html +5 -2
  41. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.html +15 -15
  45. package/coverage/lcov-report/api/controllers/view/index.js.html +52 -10
  46. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  49. package/coverage/lcov-report/api/index.html +1 -1
  50. package/coverage/lcov-report/api/index.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/index.html +9 -9
  64. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +11 -98
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  81. package/coverage/lcov-report/automations/actions.js.html +1 -1
  82. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  83. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  84. package/coverage/lcov-report/automations/index.html +1 -1
  85. package/coverage/lcov-report/automations/index.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/index.html +1 -1
  95. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  113. package/coverage/lcov-report/automations/utils.js.html +1 -1
  114. package/coverage/lcov-report/constants/index.html +1 -1
  115. package/coverage/lcov-report/constants/index.js.html +1 -1
  116. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  117. package/coverage/lcov-report/constants/screens.js.html +1 -1
  118. package/coverage/lcov-report/db/client.js.html +1 -1
  119. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  120. package/coverage/lcov-report/db/index.html +1 -1
  121. package/coverage/lcov-report/db/index.js.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  126. package/coverage/lcov-report/db/newid.js.html +4 -4
  127. package/coverage/lcov-report/db/utils.js.html +58 -58
  128. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  129. package/coverage/lcov-report/events/index.html +1 -1
  130. package/coverage/lcov-report/events/index.js.html +1 -1
  131. package/coverage/lcov-report/events/utils.js.html +1 -1
  132. package/coverage/lcov-report/index.html +55 -40
  133. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  134. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  135. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  136. package/coverage/lcov-report/middleware/authorized.js.html +2 -2
  137. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  138. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  139. package/coverage/lcov-report/middleware/index.html +1 -1
  140. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  141. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  142. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  143. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  144. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  145. package/coverage/lcov-report/threads/automation.js.html +1 -1
  146. package/coverage/lcov-report/threads/index.html +1 -1
  147. package/coverage/lcov-report/threads/index.js.html +1 -1
  148. package/coverage/lcov-report/threads/query.js.html +1 -1
  149. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  150. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  151. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  152. package/coverage/lcov-report/utilities/csvParser.js.html +19 -10
  153. package/coverage/lcov-report/utilities/global.js.html +1 -1
  154. package/coverage/lcov-report/utilities/index.html +14 -14
  155. package/coverage/lcov-report/utilities/index.js.html +1 -1
  156. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  157. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  158. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  159. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  160. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  161. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  162. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  163. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  164. package/coverage/lcov-report/utilities/security.js.html +1 -1
  165. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  166. package/coverage/lcov-report/utilities/users.js.html +1 -1
  167. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  168. package/coverage/lcov.info +538 -480
  169. package/dist/api/controllers/query/import/index.js +79 -0
  170. package/dist/api/controllers/query/import/sources/base/index.js +63 -0
  171. package/dist/api/controllers/query/import/sources/base/openapi.js +42 -0
  172. package/dist/api/controllers/query/import/sources/curl.js +90 -0
  173. package/dist/api/controllers/query/import/sources/openapi2.js +139 -0
  174. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
  175. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
  176. package/dist/api/controllers/{query.js → query/index.js} +38 -4
  177. package/dist/api/controllers/query/validation.js +36 -0
  178. package/dist/api/controllers/view/index.js +15 -2
  179. package/dist/api/routes/query.js +2 -32
  180. package/dist/package.json +8 -4
  181. package/dist/tsconfig.tsbuildinfo +1 -1
  182. package/dist/utilities/csvParser.js +5 -2
  183. package/package.json +9 -5
  184. package/src/api/controllers/query/import/index.ts +85 -0
  185. package/src/api/controllers/query/import/sources/base/index.ts +86 -0
  186. package/src/api/controllers/query/import/sources/base/openapi.ts +24 -0
  187. package/src/api/controllers/query/import/sources/curl.ts +94 -0
  188. package/src/api/controllers/query/import/sources/openapi2.ts +159 -0
  189. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +104 -0
  190. package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +1 -0
  191. package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +2 -0
  192. package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +1 -0
  193. package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +3 -0
  194. package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +2 -0
  195. package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +1 -0
  196. package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +2 -0
  197. package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +2 -0
  198. package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +1 -0
  199. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
  200. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +160 -0
  201. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
  202. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +711 -0
  203. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +239 -0
  204. package/src/api/controllers/query/import/tests/index.spec.js +115 -0
  205. package/src/api/controllers/{query.js → query/index.js} +46 -4
  206. package/src/api/controllers/query/validation.js +40 -0
  207. package/src/api/controllers/table/utils.js +1 -0
  208. package/src/api/controllers/view/index.js +16 -2
  209. package/src/api/routes/query.js +5 -34
  210. package/src/definitions/common.ts +22 -0
  211. package/src/integrations/oracle.ts +1 -1
  212. package/src/utilities/csvParser.js +5 -2
@@ -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'>12/12</span>
28
+ <span class='fraction'>9/9</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'>2/2</span>
42
+ <span class='fraction'>0/0</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'>12/12</span>
49
+ <span class='fraction'>9/9</span>
50
50
  </div>
51
51
 
52
52
 
@@ -114,37 +114,7 @@
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>
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>
117
+ <a name='L58'></a><a href='#L58'>58</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
148
118
  <span class="cline-any cline-yes">23x</span>
149
119
  <span class="cline-any cline-yes">23x</span>
150
120
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -152,47 +122,18 @@
152
122
  <span class="cline-any cline-neutral">&nbsp;</span>
153
123
  <span class="cline-any cline-neutral">&nbsp;</span>
154
124
  <span class="cline-any cline-yes">23x</span>
155
- <span class="cline-any cline-yes">23x</span>
156
125
  <span class="cline-any cline-neutral">&nbsp;</span>
157
126
  <span class="cline-any cline-neutral">&nbsp;</span>
158
127
  <span class="cline-any cline-neutral">&nbsp;</span>
159
128
  <span class="cline-any cline-neutral">&nbsp;</span>
160
129
  <span class="cline-any cline-yes">23x</span>
161
130
  <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">23x</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
164
131
  <span class="cline-any cline-neutral">&nbsp;</span>
165
132
  <span class="cline-any cline-neutral">&nbsp;</span>
166
133
  <span class="cline-any cline-yes">23x</span>
167
134
  <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>
186
135
  <span class="cline-any cline-yes">23x</span>
187
136
  <span class="cline-any cline-neutral">&nbsp;</span>
188
- <span class="cline-any cline-neutral">&nbsp;</span>
189
- <span class="cline-any cline-neutral">&nbsp;</span>
190
- <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-neutral">&nbsp;</span>
196
137
  <span class="cline-any cline-yes">23x</span>
197
138
  <span class="cline-any cline-neutral">&nbsp;</span>
198
139
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -228,57 +169,28 @@
228
169
  <span class="cline-any cline-neutral">&nbsp;</span>
229
170
  <span class="cline-any cline-neutral">&nbsp;</span>
230
171
  <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
173
  <span class="cline-any cline-yes">23x</span>
232
174
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Router = require("@koa/router")
233
175
  const queryController = require("../controllers/query")
234
176
  const authorized = require("../../middleware/authorized")
235
- const Joi = require("joi")
236
177
  const {
237
178
  PermissionLevels,
238
179
  PermissionTypes,
239
180
  BUILDER,
240
181
  } = require("@budibase/auth/permissions")
241
- const joiValidator = require("../../middleware/joi-validator")
242
182
  const {
243
183
  bodyResource,
244
184
  bodySubResource,
245
185
  paramResource,
246
186
  } = require("../../middleware/resourceId")
187
+ const {
188
+ generateQueryPreviewValidation,
189
+ generateQueryValidation,
190
+ } = require("../controllers/query/validation")
247
191
  &nbsp;
248
192
  const router = Router()
249
193
  &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;
282
194
  router
283
195
  .get("/api/queries", authorized(BUILDER), queryController.fetch)
284
196
  .post(
@@ -288,6 +200,7 @@ router
288
200
  generateQueryValidation(),
289
201
  queryController.save
290
202
  )
203
+ .post("/api/queries/import", authorized(BUILDER), queryController.import)
291
204
  .post(
292
205
  "/api/queries/preview",
293
206
  bodyResource("datasourceId"),
@@ -322,7 +235,7 @@ module.exports = router
322
235
  <div class='footer quiet pad2 space-top1 center small'>
323
236
  Code coverage generated by
324
237
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
325
- at Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
238
+ at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
326
239
  </div>
327
240
  </div>
328
241
  <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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
175
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
109
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
829
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
202
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
97
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
217
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
700
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
115
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
196
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
160
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
193
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
280
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
298
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
211
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
173
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
118
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
277
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
376
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
184
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
343
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
316
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
310
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
277
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
340
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
338
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
328
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
469
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
418
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
271
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
202
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
259
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
385
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
175
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
319
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
163
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
160
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
188
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
112
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
163
+ at Wed Dec 08 2021 12:00:06 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 Fri Dec 03 2021 11:20:15 GMT+0000 (Coordinated Universal Time)
187
+ at Wed Dec 08 2021 12:00:06 GMT+0000 (Coordinated Universal Time)
188
188
  </div>
189
189
  </div>
190
190
  <script src="../../prettify.js"></script>