@budibase/server 1.2.39 → 1.2.41-alpha.1

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 (190) hide show
  1. package/__mocks__/mongodb.ts +4 -0
  2. package/__mocks__/node-fetch.ts +8 -1
  3. package/builder/assets/index.5589226e.js +977 -0
  4. package/builder/assets/index.6b1c808b.css +6 -0
  5. package/builder/assets/{vendor.6bcafa60.js → vendor.67dbd8fa.js} +1 -1
  6. package/builder/index.html +3 -3
  7. package/coverage/clover.xml +473 -446
  8. package/coverage/coverage-final.json +10 -10
  9. package/coverage/lcov-report/api/controllers/apikeys.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 +1 -1
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +1 -1
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.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 +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  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 +25 -25
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +317 -191
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +27 -18
  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/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +2 -2
  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/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +19 -19
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +15 -15
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +37 -10
  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/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +1 -1
  78. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  79. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  80. package/coverage/lcov-report/automations/index.html +1 -1
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/index.html +1 -1
  89. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/constants/index.html +1 -1
  109. package/coverage/lcov-report/constants/index.js.html +30 -30
  110. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  111. package/coverage/lcov-report/constants/screens.js.html +1 -1
  112. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  113. package/coverage/lcov-report/db/index.html +1 -1
  114. package/coverage/lcov-report/db/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  119. package/coverage/lcov-report/db/newid.js.html +3 -3
  120. package/coverage/lcov-report/db/utils.js.html +61 -61
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  122. package/coverage/lcov-report/events/index.html +1 -1
  123. package/coverage/lcov-report/events/index.js.html +1 -1
  124. package/coverage/lcov-report/events/utils.js.html +1 -1
  125. package/coverage/lcov-report/index.html +27 -27
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  127. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  128. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  129. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  130. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  131. package/coverage/lcov-report/middleware/index.html +1 -1
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  133. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  134. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  135. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  136. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  137. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  138. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  139. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  140. package/coverage/lcov-report/utilities/global.js.html +16 -16
  141. package/coverage/lcov-report/utilities/index.html +1 -1
  142. package/coverage/lcov-report/utilities/index.js.html +23 -23
  143. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  144. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  150. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  151. package/coverage/lcov-report/utilities/security.js.html +1 -1
  152. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  156. package/coverage/lcov-report/utilities/users.js.html +7 -7
  157. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  158. package/coverage/lcov.info +739 -693
  159. package/dist/api/controllers/row/internalSearch.js +39 -4
  160. package/dist/api/controllers/row/utils.js +3 -1
  161. package/dist/api/controllers/table/external.js +1 -1
  162. package/dist/api/controllers/view/utils.js +11 -2
  163. package/dist/automations/logging/index.js +3 -0
  164. package/dist/integrations/base/query.js +27 -0
  165. package/dist/integrations/base/sql.js +62 -30
  166. package/dist/integrations/base/utils.js +13 -27
  167. package/dist/integrations/microsoftSqlServer.js +5 -2
  168. package/dist/integrations/mongodb.js +35 -8
  169. package/dist/integrations/mysql.js +2 -2
  170. package/dist/integrations/postgres.js +5 -2
  171. package/dist/package.json +7 -7
  172. package/dist/tsconfig.build.tsbuildinfo +1 -1
  173. package/package.json +8 -8
  174. package/src/api/controllers/row/internalSearch.js +45 -3
  175. package/src/api/controllers/row/utils.js +4 -1
  176. package/src/api/controllers/table/external.js +1 -1
  177. package/src/api/controllers/view/utils.js +11 -2
  178. package/src/api/routes/tests/internalSearch.spec.js +176 -0
  179. package/src/automations/logging/index.ts +3 -0
  180. package/src/integrations/base/query.ts +16 -0
  181. package/src/integrations/base/sql.ts +67 -30
  182. package/src/integrations/base/utils.ts +9 -18
  183. package/src/integrations/microsoftSqlServer.ts +3 -2
  184. package/src/integrations/mongodb.ts +35 -8
  185. package/src/integrations/mysql.ts +1 -1
  186. package/src/integrations/postgres.ts +2 -1
  187. package/src/integrations/tests/mongo.spec.js +218 -0
  188. package/src/integrations/tests/sql.spec.js +101 -11
  189. package/builder/assets/index.08dd0c5e.css +0 -6
  190. package/builder/assets/index.de0c6e60.js +0 -975
@@ -538,7 +538,7 @@ exports.finaliseRow = async (
538
538
  <div class='footer quiet pad2 space-top1 center small'>
539
539
  Code coverage generated by
540
540
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
541
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
541
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
542
542
  </div>
543
543
  <script src="../../../prettify.js"></script>
544
544
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">66.66% </span>
26
+ <span class="strong">67.85% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>36/54</span>
28
+ <span class='fraction'>38/56</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">66.03% </span>
47
+ <span class="strong">67.27% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>35/53</span>
49
+ <span class='fraction'>37/55</span>
50
50
  </div>
51
51
 
52
52
 
@@ -158,15 +158,19 @@
158
158
  <a name='L93'></a><a href='#L93'>93</a>
159
159
  <a name='L94'></a><a href='#L94'>94</a>
160
160
  <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">45x</span>
162
- <span class="cline-any cline-yes">45x</span>
163
- <span class="cline-any cline-yes">45x</span>
164
- <span class="cline-any cline-yes">45x</span>
165
- <span class="cline-any cline-yes">45x</span>
166
- <span class="cline-any cline-yes">45x</span>
167
- <span class="cline-any cline-yes">45x</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-yes">45x</span>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">46x</span>
165
+ <span class="cline-any cline-yes">46x</span>
166
+ <span class="cline-any cline-yes">46x</span>
167
+ <span class="cline-any cline-yes">46x</span>
168
+ <span class="cline-any cline-yes">46x</span>
169
+ <span class="cline-any cline-yes">46x</span>
170
+ <span class="cline-any cline-yes">46x</span>
171
+ <span class="cline-any cline-yes">46x</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-yes">46x</span>
170
174
  <span class="cline-any cline-neutral">&nbsp;</span>
171
175
  <span class="cline-any cline-yes">2x</span>
172
176
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -176,14 +180,16 @@
176
180
  <span class="cline-any cline-neutral">&nbsp;</span>
177
181
  <span class="cline-any cline-neutral">&nbsp;</span>
178
182
  <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-yes">45x</span>
183
+ <span class="cline-any cline-yes">46x</span>
184
+ <span class="cline-any cline-neutral">&nbsp;</span>
185
+ <span class="cline-any cline-yes">46x</span>
180
186
  <span class="cline-any cline-yes">1x</span>
181
187
  <span class="cline-any cline-yes">1x</span>
182
188
  <span class="cline-any cline-yes">1x</span>
183
189
  <span class="cline-any cline-yes">1x</span>
184
190
  <span class="cline-any cline-neutral">&nbsp;</span>
185
191
  <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-yes">45x</span>
192
+ <span class="cline-any cline-yes">46x</span>
187
193
  <span class="cline-any cline-yes">26x</span>
188
194
  <span class="cline-any cline-neutral">&nbsp;</span>
189
195
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -202,7 +208,7 @@
202
208
  <span class="cline-any cline-yes">23x</span>
203
209
  <span class="cline-any cline-neutral">&nbsp;</span>
204
210
  <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-yes">45x</span>
211
+ <span class="cline-any cline-yes">46x</span>
206
212
  <span class="cline-any cline-yes">82x</span>
207
213
  <span class="cline-any cline-yes">2x</span>
208
214
  <span class="cline-any cline-yes">2x</span>
@@ -258,8 +264,9 @@ const { cloneDeep } = require("lodash/fp")
258
264
  const { InternalTables } = require("../../../db/utils")
259
265
  const userController = require("../user")
260
266
  const { FieldTypes } = require("../../../constants")
261
- const { makeExternalQuery } = require("../../../integrations/base/utils")
262
267
  const { getAppDB } = require("@budibase/backend-core/context")
268
+ const { makeExternalQuery } = require("../../../integrations/base/query")
269
+ const { removeKeyNumbering } = require("../../../integrations/base/utils")
263
270
  &nbsp;
264
271
  validateJs.extend(validateJs.validators.datetime, {
265
272
  parse: function (value) {
@@ -271,6 +278,8 @@ validateJs.extend(validateJs.validators.datetime, {
271
278
  },
272
279
  })
273
280
  &nbsp;
281
+ exports.removeKeyNumbering = removeKeyNumbering
282
+ &nbsp;
274
283
  exports.getDatasourceAndQuery = async json =&gt; {
275
284
  const datasourceId = json.endpoint.datasourceId
276
285
  const db = getAppDB()
@@ -355,7 +364,7 @@ exports.validate = async ({ tableId, row, table }) =&gt; {
355
364
  <div class='footer quiet pad2 space-top1 center small'>
356
365
  Code coverage generated by
357
366
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
358
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
367
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
359
368
  </div>
360
369
  <script src="../../../prettify.js"></script>
361
370
  <script>
@@ -244,7 +244,7 @@ exports.destroy = async ctx =&gt; {
244
244
  <div class='footer quiet pad2 space-top1 center small'>
245
245
  Code coverage generated by
246
246
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
247
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
247
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
248
248
  </div>
249
249
  <script src="../../prettify.js"></script>
250
250
  <script>
@@ -103,7 +103,7 @@ exports.save = <span class="fstat-no" title="function not covered" >as</span>ync
103
103
  <div class='footer quiet pad2 space-top1 center small'>
104
104
  Code coverage generated by
105
105
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
106
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
106
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
107
107
  </div>
108
108
  <script src="../../prettify.js"></script>
109
109
  <script>
@@ -589,7 +589,7 @@ exports.runStaticFormulaChecks = async (table, { oldTable, deletion }) =&gt; {
589
589
  <div class='footer quiet pad2 space-top1 center small'>
590
590
  Code coverage generated by
591
591
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
592
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
592
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
593
593
  </div>
594
594
  <script src="../../../prettify.js"></script>
595
595
  <script>
@@ -719,7 +719,7 @@ const {
719
719
  FieldTypes,
720
720
  RelationshipTypes,
721
721
  } = require("../../../constants")
722
- const { makeExternalQuery } = require("../../../integrations/base/utils")
722
+ const { makeExternalQuery } = require("../../../integrations/base/query")
723
723
  const { cloneDeep } = require("lodash/fp")
724
724
  const csvParser = require("../../../utilities/csvParser")
725
725
  const { handleRequest } = require("../row/external")
@@ -1030,7 +1030,7 @@ exports.bulkImport = <span class="fstat-no" title="function not covered" >as</sp
1030
1030
  <div class='footer quiet pad2 space-top1 center small'>
1031
1031
  Code coverage generated by
1032
1032
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1033
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
1033
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
1034
1034
  </div>
1035
1035
  <script src="../../../prettify.js"></script>
1036
1036
  <script>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
134
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
135
135
  </div>
136
136
  <script src="../../../prettify.js"></script>
137
137
  <script>
@@ -403,7 +403,7 @@ exports.validateCSVSchema = async function (ctx) {
403
403
  <div class='footer quiet pad2 space-top1 center small'>
404
404
  Code coverage generated by
405
405
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
406
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
406
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
407
407
  </div>
408
408
  <script src="../../../prettify.js"></script>
409
409
  <script>
@@ -190,7 +190,7 @@ exports.downloadTemplate = async function (ctx) {
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" rel="noopener noreferrer">istanbul</a>
193
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
193
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
194
194
  </div>
195
195
  <script src="../../prettify.js"></script>
196
196
  <script>
@@ -301,19 +301,19 @@
301
301
  <span class="cline-any cline-neutral">&nbsp;</span>
302
302
  <span class="cline-any cline-neutral">&nbsp;</span>
303
303
  <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-yes">45x</span>
305
- <span class="cline-any cline-yes">45x</span>
306
- <span class="cline-any cline-yes">45x</span>
307
- <span class="cline-any cline-yes">45x</span>
308
- <span class="cline-any cline-yes">45x</span>
309
- <span class="cline-any cline-yes">45x</span>
304
+ <span class="cline-any cline-yes">46x</span>
305
+ <span class="cline-any cline-yes">46x</span>
306
+ <span class="cline-any cline-yes">46x</span>
307
+ <span class="cline-any cline-yes">46x</span>
308
+ <span class="cline-any cline-yes">46x</span>
309
+ <span class="cline-any cline-yes">46x</span>
310
310
  <span class="cline-any cline-neutral">&nbsp;</span>
311
311
  <span class="cline-any cline-neutral">&nbsp;</span>
312
312
  <span class="cline-any cline-neutral">&nbsp;</span>
313
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">45x</span>
315
- <span class="cline-any cline-yes">45x</span>
316
- <span class="cline-any cline-yes">45x</span>
314
+ <span class="cline-any cline-yes">46x</span>
315
+ <span class="cline-any cline-yes">46x</span>
316
+ <span class="cline-any cline-yes">46x</span>
317
317
  <span class="cline-any cline-neutral">&nbsp;</span>
318
318
  <span class="cline-any cline-neutral">&nbsp;</span>
319
319
  <span class="cline-any cline-yes">2x</span>
@@ -354,7 +354,7 @@
354
354
  <span class="cline-any cline-no">&nbsp;</span>
355
355
  <span class="cline-any cline-neutral">&nbsp;</span>
356
356
  <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-yes">45x</span>
357
+ <span class="cline-any cline-yes">46x</span>
358
358
  <span class="cline-any cline-neutral">&nbsp;</span>
359
359
  <span class="cline-any cline-no">&nbsp;</span>
360
360
  <span class="cline-any cline-no">&nbsp;</span>
@@ -368,7 +368,7 @@
368
368
  <span class="cline-any cline-no">&nbsp;</span>
369
369
  <span class="cline-any cline-neutral">&nbsp;</span>
370
370
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-yes">45x</span>
371
+ <span class="cline-any cline-yes">46x</span>
372
372
  <span class="cline-any cline-no">&nbsp;</span>
373
373
  <span class="cline-any cline-neutral">&nbsp;</span>
374
374
  <span class="cline-any cline-no">&nbsp;</span>
@@ -441,7 +441,7 @@
441
441
  <span class="cline-any cline-neutral">&nbsp;</span>
442
442
  <span class="cline-any cline-neutral">&nbsp;</span>
443
443
  <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-yes">45x</span>
444
+ <span class="cline-any cline-yes">46x</span>
445
445
  <span class="cline-any cline-yes">2x</span>
446
446
  <span class="cline-any cline-yes">2x</span>
447
447
  <span class="cline-any cline-yes">2x</span>
@@ -461,7 +461,7 @@
461
461
  <span class="cline-any cline-yes">2x</span>
462
462
  <span class="cline-any cline-neutral">&nbsp;</span>
463
463
  <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-yes">45x</span>
464
+ <span class="cline-any cline-yes">46x</span>
465
465
  <span class="cline-any cline-neutral">&nbsp;</span>
466
466
  <span class="cline-any cline-no">&nbsp;</span>
467
467
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -471,7 +471,7 @@
471
471
  <span class="cline-any cline-no">&nbsp;</span>
472
472
  <span class="cline-any cline-neutral">&nbsp;</span>
473
473
  <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-yes">45x</span>
474
+ <span class="cline-any cline-yes">46x</span>
475
475
  <span class="cline-any cline-yes">1x</span>
476
476
  <span class="cline-any cline-yes">1x</span>
477
477
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -483,7 +483,7 @@
483
483
  <span class="cline-any cline-yes">1x</span>
484
484
  <span class="cline-any cline-neutral">&nbsp;</span>
485
485
  <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-yes">45x</span>
486
+ <span class="cline-any cline-yes">46x</span>
487
487
  <span class="cline-any cline-yes">1x</span>
488
488
  <span class="cline-any cline-yes">1x</span>
489
489
  <span class="cline-any cline-yes">1x</span>
@@ -496,11 +496,11 @@
496
496
  <span class="cline-any cline-neutral">&nbsp;</span>
497
497
  <span class="cline-any cline-neutral">&nbsp;</span>
498
498
  <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-yes">45x</span>
499
+ <span class="cline-any cline-yes">46x</span>
500
500
  <span class="cline-any cline-yes">1x</span>
501
501
  <span class="cline-any cline-neutral">&nbsp;</span>
502
502
  <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-yes">45x</span>
503
+ <span class="cline-any cline-yes">46x</span>
504
504
  <span class="cline-any cline-no">&nbsp;</span>
505
505
  <span class="cline-any cline-no">&nbsp;</span>
506
506
  <span class="cline-any cline-no">&nbsp;</span>
@@ -519,7 +519,7 @@
519
519
  <span class="cline-any cline-no">&nbsp;</span>
520
520
  <span class="cline-any cline-neutral">&nbsp;</span>
521
521
  <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-yes">45x</span>
522
+ <span class="cline-any cline-yes">46x</span>
523
523
  <span class="cline-any cline-no">&nbsp;</span>
524
524
  <span class="cline-any cline-no">&nbsp;</span>
525
525
  <span class="cline-any cline-no">&nbsp;</span>
@@ -772,7 +772,7 @@ exports.getFlags = <span class="fstat-no" title="function not covered" >as</span
772
772
  <div class='footer quiet pad2 space-top1 center small'>
773
773
  Code coverage generated by
774
774
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
775
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
775
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
776
776
  </div>
777
777
  <script src="../../prettify.js"></script>
778
778
  <script>
@@ -148,7 +148,7 @@ exports.ExportFormats = {
148
148
  <div class='footer quiet pad2 space-top1 center small'>
149
149
  Code coverage generated by
150
150
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
151
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
151
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
152
152
  </div>
153
153
  <script src="../../../prettify.js"></script>
154
154
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">78.57% </span>
26
+ <span class="strong">77.27% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>187/238</span>
28
+ <span class='fraction'>187/242</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">77.86% </span>
33
+ <span class="strong">76.69% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>102/131</span>
35
+ <span class='fraction'>102/133</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">78.81% </span>
47
+ <span class="strong">77.5% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>186/236</span>
49
+ <span class='fraction'>186/240</span>
50
50
  </div>
51
51
 
52
52
 
@@ -110,17 +110,17 @@
110
110
 
111
111
  <tr>
112
112
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
113
- <td data-value="53.65" class="pic medium">
114
- <div class="chart"><div class="cover-fill" style="width: 53%"></div><div class="cover-empty" style="width: 47%"></div></div>
113
+ <td data-value="51.16" class="pic medium">
114
+ <div class="chart"><div class="cover-fill" style="width: 51%"></div><div class="cover-empty" style="width: 49%"></div></div>
115
115
  </td>
116
- <td data-value="53.65" class="pct medium">53.65%</td>
117
- <td data-value="82" class="abs medium">44/82</td>
118
- <td data-value="34.61" class="pct low">34.61%</td>
119
- <td data-value="26" class="abs low">9/26</td>
116
+ <td data-value="51.16" class="pct medium">51.16%</td>
117
+ <td data-value="86" class="abs medium">44/86</td>
118
+ <td data-value="32.14" class="pct low">32.14%</td>
119
+ <td data-value="28" class="abs low">9/28</td>
120
120
  <td data-value="66.66" class="pct medium">66.66%</td>
121
121
  <td data-value="9" class="abs medium">6/9</td>
122
- <td data-value="53.65" class="pct medium">53.65%</td>
123
- <td data-value="82" class="abs medium">44/82</td>
122
+ <td data-value="51.16" class="pct medium">51.16%</td>
123
+ <td data-value="86" class="abs medium">44/86</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
149
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
150
150
  </div>
151
151
  <script src="../../../prettify.js"></script>
152
152
  <script>
@@ -637,7 +637,7 @@ exports.exportView = async ctx =&gt; {
637
637
  <div class='footer quiet pad2 space-top1 center small'>
638
638
  Code coverage generated by
639
639
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
640
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
640
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
641
641
  </div>
642
642
  <script src="../../../prettify.js"></script>
643
643
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">53.65% </span>
26
+ <span class="strong">51.16% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>44/82</span>
28
+ <span class='fraction'>44/86</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">34.61% </span>
33
+ <span class="strong">32.14% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>9/26</span>
35
+ <span class='fraction'>9/28</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">53.65% </span>
47
+ <span class="strong">51.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>44/82</span>
49
+ <span class='fraction'>44/86</span>
50
50
  </div>
51
51
 
52
52
 
@@ -213,7 +213,16 @@
213
213
  <a name='L148'></a><a href='#L148'>148</a>
214
214
  <a name='L149'></a><a href='#L149'>149</a>
215
215
  <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
217
226
  <span class="cline-any cline-neutral">&nbsp;</span>
218
227
  <span class="cline-any cline-neutral">&nbsp;</span>
219
228
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -237,6 +246,15 @@
237
246
  <span class="cline-any cline-neutral">&nbsp;</span>
238
247
  <span class="cline-any cline-no">&nbsp;</span>
239
248
  <span class="cline-any cline-no">&nbsp;</span>
249
+ <span class="cline-any cline-no">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-no">&nbsp;</span>
253
+ <span class="cline-any cline-no">&nbsp;</span>
254
+ <span class="cline-any cline-neutral">&nbsp;</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-no">&nbsp;</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
258
  <span class="cline-any cline-neutral">&nbsp;</span>
241
259
  <span class="cline-any cline-neutral">&nbsp;</span>
242
260
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -385,8 +403,17 @@ exports.getView = async viewName =&gt; {
385
403
  <span class="cstat-no" title="statement not covered" > return null</span>
386
404
  }
387
405
  &nbsp;
388
- const viewDoc = <span class="cstat-no" title="statement not covered" >await db.get(generateMemoryViewID(viewName))</span>
389
- <span class="cstat-no" title="statement not covered" > return viewDoc.view</span>
406
+ <span class="cstat-no" title="statement not covered" > try {</span>
407
+ const viewDoc = <span class="cstat-no" title="statement not covered" >await db.get(generateMemoryViewID(viewName))</span>
408
+ <span class="cstat-no" title="statement not covered" > return viewDoc.view</span>
409
+ } catch (err) {
410
+ // Return null when PouchDB doesn't found the view
411
+ <span class="cstat-no" title="statement not covered" > if (err.status === 404) {</span>
412
+ <span class="cstat-no" title="statement not covered" > return null</span>
413
+ }
414
+ &nbsp;
415
+ <span class="cstat-no" title="statement not covered" > throw err</span>
416
+ }
390
417
  }
391
418
  }
392
419
  &nbsp;
@@ -520,7 +547,7 @@ exports.getFromMemoryDoc = async (db, viewName) =&gt; {
520
547
  <div class='footer quiet pad2 space-top1 center small'>
521
548
  Code coverage generated by
522
549
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
523
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
550
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
524
551
  </div>
525
552
  <script src="../../../prettify.js"></script>
526
553
  <script>
@@ -619,7 +619,7 @@ module.exports = viewTemplate
619
619
  <div class='footer quiet pad2 space-top1 center small'>
620
620
  Code coverage generated by
621
621
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
622
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
622
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
623
623
  </div>
624
624
  <script src="../../../prettify.js"></script>
625
625
  <script>
@@ -409,7 +409,7 @@ exports.trigger = async ctx =&gt; {
409
409
  <div class='footer quiet pad2 space-top1 center small'>
410
410
  Code coverage generated by
411
411
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
412
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
412
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
413
413
  </div>
414
414
  <script src="../../prettify.js"></script>
415
415
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
104
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -358,7 +358,7 @@ module.exports.shutdown = shutdown
358
358
  <div class='footer quiet pad2 space-top1 center small'>
359
359
  Code coverage generated by
360
360
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
361
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
361
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
362
362
  </div>
363
363
  <script src="../prettify.js"></script>
364
364
  <script>
@@ -97,7 +97,7 @@ module.exports = router
97
97
  <div class='footer quiet pad2 space-top1 center small'>
98
98
  Code coverage generated by
99
99
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
100
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
100
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
101
101
  </div>
102
102
  <script src="../../prettify.js"></script>
103
103
  <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" rel="noopener noreferrer">istanbul</a>
109
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
109
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
110
110
  </div>
111
111
  <script src="../../prettify.js"></script>
112
112
  <script>
@@ -94,7 +94,7 @@ module.exports = router
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" rel="noopener noreferrer">istanbul</a>
97
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
97
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  <script src="../../prettify.js"></script>
100
100
  <script>
@@ -325,7 +325,7 @@ module.exports = router
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" rel="noopener noreferrer">istanbul</a>
328
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
328
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
329
329
  </div>
330
330
  <script src="../../prettify.js"></script>
331
331
  <script>
@@ -100,7 +100,7 @@ module.exports = router
100
100
  <div class='footer quiet pad2 space-top1 center small'>
101
101
  Code coverage generated by
102
102
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
103
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
103
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
104
104
  </div>
105
105
  <script src="../../prettify.js"></script>
106
106
  <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" rel="noopener noreferrer">istanbul</a>
115
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
115
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
116
116
  </div>
117
117
  <script src="../../prettify.js"></script>
118
118
  <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" rel="noopener noreferrer">istanbul</a>
115
- at Fri Aug 12 2022 13:51:41 GMT+0000 (Coordinated Universal Time)
115
+ at Wed Aug 17 2022 15:20:44 GMT+0000 (Coordinated Universal Time)
116
116
  </div>
117
117
  <script src="../../prettify.js"></script>
118
118
  <script>