@budibase/server 0.9.138 → 0.9.140-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.
- package/builder/assets/discord.c14881e9.svg +10 -0
- package/builder/assets/{index.b18ab99b.js → index.1d1fa051.js} +35 -35
- package/builder/assets/{index.121692c9.css → index.79907e5c.css} +5 -5
- package/builder/assets/integromat.42212f11.png +0 -0
- package/builder/assets/slack.1e1f7cfb.svg +33 -0
- package/builder/assets/{vendor.7177f366.js → vendor.d39b3c1e.js} +2 -2
- package/builder/assets/zapier.3fbd8f5c.png +0 -0
- package/builder/index.html +3 -3
- package/coverage/clover.xml +2138 -2091
- package/coverage/coverage-final.json +120 -106
- package/coverage/lcov-report/api/controllers/analytics.js.html +3 -3
- package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
- package/coverage/lcov-report/api/controllers/application.js.html +84 -84
- package/coverage/lcov-report/api/controllers/auth.js.html +6 -6
- package/coverage/lcov-report/api/controllers/automation.js.html +182 -356
- package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
- package/coverage/lcov-report/api/controllers/component.js.html +5 -5
- package/coverage/lcov-report/api/controllers/datasource.js.html +12 -12
- package/coverage/lcov-report/api/controllers/dev.js.html +15 -15
- package/coverage/lcov-report/api/controllers/hosting.js.html +8 -8
- package/coverage/lcov-report/api/controllers/index.html +47 -32
- package/coverage/lcov-report/api/controllers/integration.js.html +4 -4
- package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
- package/coverage/lcov-report/api/controllers/metadata.js.html +218 -0
- package/coverage/lcov-report/api/controllers/permission.js.html +14 -14
- package/coverage/lcov-report/api/controllers/query.js.html +17 -23
- package/coverage/lcov-report/api/controllers/role.js.html +9 -9
- package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
- package/coverage/lcov-report/api/controllers/row/external.js.html +15 -15
- package/coverage/lcov-report/api/controllers/row/index.html +29 -44
- package/coverage/lcov-report/api/controllers/row/index.js.html +48 -45
- package/coverage/lcov-report/api/controllers/row/internal.js.html +159 -126
- package/coverage/lcov-report/api/controllers/row/utils.js.html +17 -17
- package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
- package/coverage/lcov-report/api/controllers/script.js.html +5 -5
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +40 -40
- package/coverage/lcov-report/api/controllers/table/utils.js.html +48 -48
- package/coverage/lcov-report/api/controllers/templates.js.html +5 -5
- package/coverage/lcov-report/api/controllers/user.js.html +14 -11
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +3 -3
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +9 -9
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +6 -6
- package/coverage/lcov-report/api/controllers/webhook.js.html +14 -14
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +23 -23
- package/coverage/lcov-report/api/routes/analytics.js.html +6 -6
- package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
- package/coverage/lcov-report/api/routes/application.js.html +8 -8
- package/coverage/lcov-report/api/routes/auth.js.html +6 -6
- package/coverage/lcov-report/api/routes/automation.js.html +41 -26
- package/coverage/lcov-report/api/routes/backup.js.html +8 -8
- package/coverage/lcov-report/api/routes/component.js.html +8 -8
- package/coverage/lcov-report/api/routes/datasource.js.html +13 -13
- package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
- package/coverage/lcov-report/api/routes/dev.js.html +11 -11
- package/coverage/lcov-report/api/routes/hosting.js.html +8 -8
- package/coverage/lcov-report/api/routes/index.html +24 -9
- package/coverage/lcov-report/api/routes/index.js.html +36 -30
- package/coverage/lcov-report/api/routes/integration.js.html +8 -8
- package/coverage/lcov-report/api/routes/layout.js.html +8 -8
- package/coverage/lcov-report/api/routes/metadata.js.html +194 -0
- package/coverage/lcov-report/api/routes/permission.js.html +12 -12
- package/coverage/lcov-report/api/routes/query.js.html +13 -13
- package/coverage/lcov-report/api/routes/role.js.html +12 -12
- package/coverage/lcov-report/api/routes/routing.js.html +8 -8
- package/coverage/lcov-report/api/routes/row.js.html +10 -10
- package/coverage/lcov-report/api/routes/screen.js.html +11 -11
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +13 -16
- package/coverage/lcov-report/api/routes/table.js.html +12 -12
- package/coverage/lcov-report/api/routes/templates.js.html +8 -8
- package/coverage/lcov-report/api/routes/user.js.html +9 -9
- package/coverage/lcov-report/api/routes/view.js.html +11 -11
- package/coverage/lcov-report/api/routes/webhook.js.html +11 -11
- package/coverage/lcov-report/automations/actions.js.html +57 -117
- package/coverage/lcov-report/automations/automationUtils.js.html +7 -7
- package/coverage/lcov-report/automations/bullboard.js.html +49 -16
- package/coverage/lcov-report/automations/index.html +67 -67
- package/coverage/lcov-report/automations/index.js.html +26 -128
- package/coverage/lcov-report/automations/steps/bash.js.html +37 -16
- package/coverage/lcov-report/automations/steps/createRow.js.html +15 -15
- package/coverage/lcov-report/automations/steps/delay.js.html +48 -9
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +14 -14
- package/coverage/lcov-report/automations/steps/discord.js.html +329 -0
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +22 -34
- package/coverage/lcov-report/automations/steps/executeScript.js.html +21 -33
- package/coverage/lcov-report/automations/steps/filter.js.html +28 -25
- package/coverage/lcov-report/automations/steps/index.html +140 -65
- package/coverage/lcov-report/automations/steps/integromat.js.html +341 -0
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +44 -38
- package/coverage/lcov-report/automations/steps/queryRows.js.html +437 -0
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +13 -13
- package/coverage/lcov-report/automations/steps/serverLog.js.html +23 -11
- package/coverage/lcov-report/automations/steps/{sendgridEmail.js.html → slack.js.html} +58 -88
- package/coverage/lcov-report/automations/steps/updateRow.js.html +12 -12
- package/coverage/lcov-report/automations/steps/utils.js.html +188 -0
- package/coverage/lcov-report/automations/steps/zapier.js.html +332 -0
- package/coverage/lcov-report/automations/thread.js.html +79 -76
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +173 -0
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +173 -0
- package/coverage/lcov-report/automations/triggerInfo/index.html +201 -0
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +125 -0
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +176 -0
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +200 -0
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +200 -0
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +188 -0
- package/coverage/lcov-report/automations/triggers.js.html +67 -838
- package/coverage/lcov-report/automations/utils.js.html +557 -0
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +32 -17
- package/coverage/lcov-report/constants/layouts.js.html +5 -5
- package/coverage/lcov-report/constants/screens.js.html +4 -4
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/index.html +19 -19
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +79 -79
- package/coverage/lcov-report/db/linkedRows/index.html +18 -18
- package/coverage/lcov-report/db/linkedRows/index.js.html +107 -149
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +43 -43
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +127 -76
- package/coverage/lcov-report/events/AutomationEmitter.js.html +7 -7
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +6 -6
- package/coverage/lcov-report/events/utils.js.html +3 -3
- package/coverage/lcov-report/index.html +116 -101
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/{automations/logic.js.html → middleware/appInfo.js.html} +35 -38
- package/coverage/lcov-report/middleware/authorized.js.html +16 -16
- package/coverage/lcov-report/middleware/builder.js.html +15 -15
- package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
- package/coverage/lcov-report/middleware/index.html +23 -8
- package/coverage/lcov-report/middleware/joi-validator.js.html +6 -6
- package/coverage/lcov-report/middleware/resourceId.js.html +28 -28
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +8 -8
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
- package/coverage/lcov-report/utilities/global.js.html +33 -33
- package/coverage/lcov-report/utilities/index.html +28 -28
- package/coverage/lcov-report/utilities/index.js.html +178 -25
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +18 -18
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
- package/coverage/lcov-report/utilities/rowProcessor/index.html +14 -14
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +87 -51
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
- package/coverage/lcov-report/utilities/security.js.html +9 -9
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +5 -5
- package/coverage/lcov-report/utilities/workerRequests.js.html +52 -52
- package/coverage/lcov.info +3255 -3218
- package/dist/api/controllers/automation.js +60 -127
- package/dist/api/controllers/deploy/index.js +17 -1
- package/dist/api/controllers/metadata.js +49 -0
- package/dist/api/controllers/query.js +0 -2
- package/dist/api/controllers/row/ExternalRequest.js +1 -1
- package/dist/api/controllers/row/index.js +1 -0
- package/dist/api/controllers/row/internal.js +33 -23
- package/dist/api/controllers/static/index.js +1 -28
- package/dist/api/controllers/static/templates/BudibaseApp.svelte +4 -1
- package/dist/api/controllers/user.js +1 -1
- package/dist/api/routes/automation.js +4 -5
- package/dist/api/routes/index.js +2 -0
- package/dist/api/routes/metadata.js +13 -0
- package/dist/api/routes/static.js +0 -1
- package/dist/api/routes/tests/utilities/TestFunctions.js +13 -0
- package/dist/app.js +1 -1
- package/dist/automations/actions.js +29 -46
- package/dist/automations/bullboard.js +11 -2
- package/dist/automations/index.js +11 -48
- package/dist/automations/steps/bash.js +12 -6
- package/dist/automations/steps/createRow.js +5 -5
- package/dist/automations/steps/delay.js +16 -3
- package/dist/automations/steps/deleteRow.js +5 -5
- package/dist/automations/steps/discord.js +91 -0
- package/dist/automations/steps/executeQuery.js +12 -15
- package/dist/automations/steps/executeScript.js +12 -15
- package/dist/automations/steps/filter.js +19 -18
- package/dist/automations/steps/integromat.js +94 -0
- package/dist/automations/steps/outgoingWebhook.js +19 -20
- package/dist/automations/steps/queryRows.js +129 -0
- package/dist/automations/steps/sendSmtpEmail.js +4 -4
- package/dist/automations/steps/serverLog.js +7 -3
- package/dist/automations/steps/slack.js +73 -0
- package/dist/automations/steps/updateRow.js +4 -4
- package/dist/automations/steps/utils.js +46 -0
- package/dist/automations/steps/zapier.js +91 -0
- package/dist/automations/tests/utilities/index.js +2 -12
- package/dist/automations/thread.js +23 -25
- package/dist/automations/triggerInfo/app.js +32 -0
- package/dist/automations/triggerInfo/cron.js +32 -0
- package/dist/automations/triggerInfo/index.js +15 -0
- package/dist/automations/triggerInfo/rowDeleted.js +33 -0
- package/dist/automations/triggerInfo/rowSaved.js +41 -0
- package/dist/automations/triggerInfo/rowUpdated.js +41 -0
- package/dist/automations/triggerInfo/webhook.js +37 -0
- package/dist/automations/triggers.js +27 -285
- package/dist/automations/utils.js +143 -0
- package/dist/constants/index.js +4 -0
- package/dist/db/linkedRows/index.js +20 -34
- package/dist/db/utils.js +14 -1
- package/dist/environment.js +2 -1
- package/dist/integrations/mysql.js +14 -2
- package/dist/middleware/appInfo.js +17 -0
- package/dist/middleware/usageQuota.js +1 -1
- package/dist/package.json +12 -11
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/appDirectoryTemplate/package.json +1 -1
- package/dist/utilities/fileSystem/clientLibrary.js +2 -2
- package/dist/utilities/fileSystem/index.js +2 -27
- package/dist/utilities/index.js +54 -0
- package/dist/utilities/redis.js +16 -1
- package/dist/utilities/rowProcessor/index.js +7 -4
- package/package.json +13 -12
- package/scripts/jestSetup.js +1 -0
- package/scripts/selfhost.js +8 -0
- package/src/api/controllers/automation.js +87 -145
- package/src/api/controllers/deploy/index.js +23 -1
- package/src/api/controllers/metadata.js +46 -0
- package/src/api/controllers/query.js +0 -2
- package/src/api/controllers/row/ExternalRequest.ts +1 -1
- package/src/api/controllers/row/index.js +1 -0
- package/src/api/controllers/row/internal.js +34 -23
- package/src/api/controllers/static/index.js +1 -39
- package/src/api/controllers/static/templates/BudibaseApp.svelte +4 -1
- package/src/api/controllers/user.js +1 -0
- package/src/api/routes/automation.js +16 -11
- package/src/api/routes/index.js +2 -0
- package/src/api/routes/metadata.js +38 -0
- package/src/api/routes/static.js +0 -1
- package/src/api/routes/tests/automation.spec.js +4 -26
- package/src/api/routes/tests/metadata.spec.js +65 -0
- package/src/api/routes/tests/utilities/TestFunctions.js +14 -0
- package/src/app.ts +1 -1
- package/src/automations/actions.js +29 -49
- package/src/automations/bullboard.js +13 -2
- package/src/automations/index.js +11 -45
- package/src/automations/steps/bash.js +13 -6
- package/src/automations/steps/createRow.js +5 -5
- package/src/automations/steps/delay.js +16 -3
- package/src/automations/steps/deleteRow.js +5 -5
- package/src/automations/steps/discord.js +83 -0
- package/src/automations/steps/executeQuery.js +12 -16
- package/src/automations/steps/executeScript.js +12 -16
- package/src/automations/steps/filter.js +19 -18
- package/src/automations/steps/integromat.js +87 -0
- package/src/automations/steps/outgoingWebhook.js +20 -18
- package/src/automations/steps/queryRows.js +119 -0
- package/src/automations/steps/sendSmtpEmail.js +4 -4
- package/src/automations/steps/serverLog.js +7 -3
- package/src/automations/steps/slack.js +64 -0
- package/src/automations/steps/updateRow.js +4 -4
- package/src/automations/steps/utils.js +36 -0
- package/src/automations/steps/zapier.js +84 -0
- package/src/automations/tests/automation.spec.js +4 -67
- package/src/automations/tests/delay.spec.js +2 -2
- package/src/automations/tests/filter.spec.js +14 -14
- package/src/automations/tests/queryRows.spec.js +51 -0
- package/src/automations/tests/utilities/index.js +2 -13
- package/src/automations/thread.js +27 -26
- package/src/automations/triggerInfo/app.js +31 -0
- package/src/automations/triggerInfo/cron.js +31 -0
- package/src/automations/triggerInfo/index.js +15 -0
- package/src/automations/triggerInfo/rowDeleted.js +32 -0
- package/src/automations/triggerInfo/rowSaved.js +40 -0
- package/src/automations/triggerInfo/rowUpdated.js +40 -0
- package/src/automations/triggerInfo/webhook.js +36 -0
- package/src/automations/triggers.js +33 -290
- package/src/automations/utils.js +159 -0
- package/src/constants/index.js +5 -0
- package/src/db/linkedRows/index.js +21 -35
- package/src/db/tests/linkTests.spec.js +0 -12
- package/src/db/utils.js +17 -0
- package/src/environment.js +2 -1
- package/src/integrations/mysql.ts +15 -2
- package/src/middleware/appInfo.js +19 -0
- package/src/middleware/usageQuota.js +1 -1
- package/src/utilities/appDirectoryTemplate/package.json +1 -1
- package/src/utilities/fileSystem/clientLibrary.js +2 -2
- package/src/utilities/fileSystem/index.js +2 -36
- package/src/utilities/index.js +51 -0
- package/src/utilities/redis.js +18 -1
- package/src/utilities/rowProcessor/index.js +16 -4
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +0 -1244
- package/dist/automations/logic.js +0 -17
- package/dist/automations/steps/sendgridEmail.js +0 -85
- package/src/automations/logic.js +0 -20
- package/src/automations/steps/sendgridEmail.js +0 -74
- package/src/automations/tests/sendEmail.spec.js +0 -36
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">89.47% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>85/95</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">71.88% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>23/32</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">92.86% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>13/14</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">89.36% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>84/94</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -281,145 +281,84 @@
|
|
|
281
281
|
<a name='L222'></a><a href='#L222'>222</a>
|
|
282
282
|
<a name='L223'></a><a href='#L223'>223</a>
|
|
283
283
|
<a name='L224'></a><a href='#L224'>224</a>
|
|
284
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
285
|
-
<
|
|
286
|
-
<
|
|
287
|
-
<
|
|
288
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
289
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
290
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
291
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
292
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
293
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
294
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
295
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
296
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
297
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
298
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
299
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
300
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
301
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
302
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
303
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
304
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
305
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
306
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
307
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
308
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
309
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
310
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
311
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
312
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
313
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
314
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
315
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
316
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
317
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
318
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
319
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
320
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
321
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
322
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
323
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
324
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
325
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
326
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
327
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
328
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
329
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
330
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
331
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
332
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
333
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
334
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
335
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
336
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
337
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
338
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
339
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
340
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
341
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
342
|
-
<a name='L283'></a><a href='#L283'>283</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">32x</span>
|
|
343
|
-
<span class="cline-any cline-yes">32x</span>
|
|
344
|
-
<span class="cline-any cline-yes">32x</span>
|
|
345
|
-
<span class="cline-any cline-yes">32x</span>
|
|
346
|
-
<span class="cline-any cline-yes">32x</span>
|
|
347
|
-
<span class="cline-any cline-yes">32x</span>
|
|
348
|
-
<span class="cline-any cline-neutral"> </span>
|
|
349
|
-
<span class="cline-any cline-yes">32x</span>
|
|
350
|
-
<span class="cline-any cline-yes">32x</span>
|
|
351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
354
|
-
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-neutral"> </span>
|
|
356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
359
|
-
<span class="cline-any cline-yes">19x</span>
|
|
360
|
-
<span class="cline-any cline-no"> </span>
|
|
284
|
+
<a name='L225'></a><a href='#L225'>225</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
|
|
285
|
+
<span class="cline-any cline-yes">33x</span>
|
|
286
|
+
<span class="cline-any cline-yes">33x</span>
|
|
287
|
+
<span class="cline-any cline-yes">33x</span>
|
|
361
288
|
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-yes">19x</span>
|
|
363
|
-
<span class="cline-any cline-yes">19x</span>
|
|
364
|
-
<span class="cline-any cline-yes">19x</span>
|
|
365
|
-
<span class="cline-any cline-yes">19x</span>
|
|
366
|
-
<span class="cline-any cline-yes">23x</span>
|
|
367
|
-
<span class="cline-any cline-no"> </span>
|
|
368
289
|
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-yes">23x</span>
|
|
370
|
-
<span class="cline-any cline-yes">7x</span>
|
|
371
|
-
<span class="cline-any cline-no"> </span>
|
|
372
290
|
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-yes">33x</span>
|
|
292
|
+
<span class="cline-any cline-yes">33x</span>
|
|
293
|
+
<span class="cline-any cline-yes">33x</span>
|
|
294
|
+
<span class="cline-any cline-yes">33x</span>
|
|
373
295
|
<span class="cline-any cline-neutral"> </span>
|
|
374
296
|
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-yes">19x</span>
|
|
376
297
|
<span class="cline-any cline-neutral"> </span>
|
|
377
298
|
<span class="cline-any cline-neutral"> </span>
|
|
378
299
|
<span class="cline-any cline-neutral"> </span>
|
|
379
300
|
<span class="cline-any cline-neutral"> </span>
|
|
380
301
|
<span class="cline-any cline-neutral"> </span>
|
|
381
302
|
<span class="cline-any cline-neutral"> </span>
|
|
303
|
+
<span class="cline-any cline-yes">1x</span>
|
|
382
304
|
<span class="cline-any cline-neutral"> </span>
|
|
383
305
|
<span class="cline-any cline-neutral"> </span>
|
|
384
306
|
<span class="cline-any cline-neutral"> </span>
|
|
385
|
-
<span class="cline-any cline-yes">20x</span>
|
|
386
|
-
<span class="cline-any cline-yes">20x</span>
|
|
387
307
|
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-yes">
|
|
308
|
+
<span class="cline-any cline-yes">1x</span>
|
|
389
309
|
<span class="cline-any cline-neutral"> </span>
|
|
390
310
|
<span class="cline-any cline-neutral"> </span>
|
|
391
311
|
<span class="cline-any cline-neutral"> </span>
|
|
392
312
|
<span class="cline-any cline-neutral"> </span>
|
|
393
313
|
<span class="cline-any cline-neutral"> </span>
|
|
394
314
|
<span class="cline-any cline-neutral"> </span>
|
|
395
|
-
<span class="cline-any cline-yes">60x</span>
|
|
396
315
|
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-yes">22x</span>
|
|
317
|
+
<span class="cline-any cline-no"> </span>
|
|
397
318
|
<span class="cline-any cline-neutral"> </span>
|
|
398
|
-
<span class="cline-any cline-yes">
|
|
399
|
-
<span class="cline-any cline-yes">
|
|
319
|
+
<span class="cline-any cline-yes">22x</span>
|
|
320
|
+
<span class="cline-any cline-yes">22x</span>
|
|
321
|
+
<span class="cline-any cline-yes">22x</span>
|
|
400
322
|
<span class="cline-any cline-neutral"> </span>
|
|
401
|
-
<span class="cline-any cline-yes">
|
|
323
|
+
<span class="cline-any cline-yes">22x</span>
|
|
324
|
+
<span class="cline-any cline-yes">18x</span>
|
|
402
325
|
<span class="cline-any cline-neutral"> </span>
|
|
403
|
-
<span class="cline-any cline-yes">
|
|
326
|
+
<span class="cline-any cline-yes">22x</span>
|
|
327
|
+
<span class="cline-any cline-yes">26x</span>
|
|
404
328
|
<span class="cline-any cline-no"> </span>
|
|
405
329
|
<span class="cline-any cline-neutral"> </span>
|
|
406
|
-
<span class="cline-any cline-
|
|
407
|
-
<span class="cline-any cline-yes">
|
|
330
|
+
<span class="cline-any cline-yes">26x</span>
|
|
331
|
+
<span class="cline-any cline-yes">7x</span>
|
|
408
332
|
<span class="cline-any cline-no"> </span>
|
|
409
333
|
<span class="cline-any cline-neutral"> </span>
|
|
410
334
|
<span class="cline-any cline-neutral"> </span>
|
|
411
335
|
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-yes">22x</span>
|
|
412
337
|
<span class="cline-any cline-neutral"> </span>
|
|
413
338
|
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-yes">33x</span>
|
|
340
|
+
<span class="cline-any cline-yes">21x</span>
|
|
341
|
+
<span class="cline-any cline-yes">21x</span>
|
|
342
|
+
<span class="cline-any cline-yes">21x</span>
|
|
414
343
|
<span class="cline-any cline-neutral"> </span>
|
|
415
344
|
<span class="cline-any cline-neutral"> </span>
|
|
416
|
-
<span class="cline-any cline-
|
|
345
|
+
<span class="cline-any cline-yes">21x</span>
|
|
346
|
+
<span class="cline-any cline-yes">1x</span>
|
|
347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
417
348
|
<span class="cline-any cline-neutral"> </span>
|
|
418
349
|
<span class="cline-any cline-yes">20x</span>
|
|
419
350
|
<span class="cline-any cline-neutral"> </span>
|
|
351
|
+
<span class="cline-any cline-yes">20x</span>
|
|
352
|
+
<span class="cline-any cline-yes">20x</span>
|
|
353
|
+
<span class="cline-any cline-yes">20x</span>
|
|
420
354
|
<span class="cline-any cline-neutral"> </span>
|
|
421
355
|
<span class="cline-any cline-neutral"> </span>
|
|
422
356
|
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-yes">20x</span>
|
|
358
|
+
<span class="cline-any cline-yes">20x</span>
|
|
359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
|
+
<span class="cline-any cline-yes">20x</span>
|
|
361
|
+
<span class="cline-any cline-yes">20x</span>
|
|
423
362
|
<span class="cline-any cline-neutral"> </span>
|
|
424
363
|
<span class="cline-any cline-neutral"> </span>
|
|
425
364
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -427,56 +366,65 @@
|
|
|
427
366
|
<span class="cline-any cline-neutral"> </span>
|
|
428
367
|
<span class="cline-any cline-neutral"> </span>
|
|
429
368
|
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-yes">20x</span>
|
|
431
|
-
<span class="cline-any cline-yes">20x</span>
|
|
432
369
|
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-yes">
|
|
370
|
+
<span class="cline-any cline-yes">33x</span>
|
|
371
|
+
<span class="cline-any cline-yes">2x</span>
|
|
372
|
+
<span class="cline-any cline-yes">2x</span>
|
|
373
|
+
<span class="cline-any cline-yes">2x</span>
|
|
374
|
+
<span class="cline-any cline-yes">2x</span>
|
|
375
|
+
<span class="cline-any cline-yes">2x</span>
|
|
376
|
+
<span class="cline-any cline-yes">2x</span>
|
|
434
377
|
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-yes">61x</span>
|
|
436
378
|
<span class="cline-any cline-neutral"> </span>
|
|
437
379
|
<span class="cline-any cline-neutral"> </span>
|
|
438
380
|
<span class="cline-any cline-neutral"> </span>
|
|
381
|
+
<span class="cline-any cline-yes">2x</span>
|
|
382
|
+
<span class="cline-any cline-yes">2x</span>
|
|
439
383
|
<span class="cline-any cline-neutral"> </span>
|
|
440
384
|
<span class="cline-any cline-neutral"> </span>
|
|
385
|
+
<span class="cline-any cline-yes">2x</span>
|
|
441
386
|
<span class="cline-any cline-neutral"> </span>
|
|
442
|
-
<span class="cline-any cline-yes">20x</span>
|
|
443
387
|
<span class="cline-any cline-neutral"> </span>
|
|
444
388
|
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-yes">2x</span>
|
|
445
390
|
<span class="cline-any cline-neutral"> </span>
|
|
446
391
|
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-yes">1x</span>
|
|
448
|
-
<span class="cline-any cline-yes">1x</span>
|
|
449
392
|
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-yes">
|
|
393
|
+
<span class="cline-any cline-yes">2x</span>
|
|
451
394
|
<span class="cline-any cline-yes">1x</span>
|
|
452
395
|
<span class="cline-any cline-neutral"> </span>
|
|
453
396
|
<span class="cline-any cline-neutral"> </span>
|
|
454
397
|
<span class="cline-any cline-neutral"> </span>
|
|
455
398
|
<span class="cline-any cline-neutral"> </span>
|
|
456
|
-
<span class="cline-any cline-yes">1x</span>
|
|
457
|
-
<span class="cline-any cline-yes">1x</span>
|
|
458
|
-
<span class="cline-any cline-yes">1x</span>
|
|
459
399
|
<span class="cline-any cline-neutral"> </span>
|
|
460
|
-
<span class="cline-any cline-yes">1x</span>
|
|
461
400
|
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-yes">2x</span>
|
|
402
|
+
<span class="cline-any cline-yes">2x</span>
|
|
462
403
|
<span class="cline-any cline-neutral"> </span>
|
|
463
404
|
<span class="cline-any cline-neutral"> </span>
|
|
464
405
|
<span class="cline-any cline-neutral"> </span>
|
|
465
406
|
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-yes">20x</span>
|
|
467
407
|
<span class="cline-any cline-neutral"> </span>
|
|
468
408
|
<span class="cline-any cline-neutral"> </span>
|
|
469
409
|
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-yes">1x</span>
|
|
471
410
|
<span class="cline-any cline-neutral"> </span>
|
|
472
411
|
<span class="cline-any cline-neutral"> </span>
|
|
412
|
+
<span class="cline-any cline-yes">33x</span>
|
|
413
|
+
<span class="cline-any cline-yes">2x</span>
|
|
414
|
+
<span class="cline-any cline-yes">2x</span>
|
|
473
415
|
<span class="cline-any cline-neutral"> </span>
|
|
474
416
|
<span class="cline-any cline-neutral"> </span>
|
|
475
417
|
<span class="cline-any cline-neutral"> </span>
|
|
476
418
|
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-yes">2x</span>
|
|
477
420
|
<span class="cline-any cline-neutral"> </span>
|
|
478
421
|
<span class="cline-any cline-neutral"> </span>
|
|
422
|
+
<span class="cline-any cline-yes">33x</span>
|
|
423
|
+
<span class="cline-any cline-yes">1x</span>
|
|
424
|
+
<span class="cline-any cline-yes">1x</span>
|
|
479
425
|
<span class="cline-any cline-neutral"> </span>
|
|
426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
427
|
+
<span class="cline-any cline-yes">33x</span>
|
|
480
428
|
<span class="cline-any cline-yes">1x</span>
|
|
481
429
|
<span class="cline-any cline-yes">1x</span>
|
|
482
430
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -485,151 +433,89 @@
|
|
|
485
433
|
<span class="cline-any cline-neutral"> </span>
|
|
486
434
|
<span class="cline-any cline-neutral"> </span>
|
|
487
435
|
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-yes">
|
|
436
|
+
<span class="cline-any cline-yes">1x</span>
|
|
437
|
+
<span class="cline-any cline-yes">1x</span>
|
|
489
438
|
<span class="cline-any cline-neutral"> </span>
|
|
490
439
|
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-yes">
|
|
492
|
-
<span class="cline-any cline-yes">
|
|
493
|
-
<span class="cline-any cline-yes">18x</span>
|
|
494
|
-
<span class="cline-any cline-yes">18x</span>
|
|
440
|
+
<span class="cline-any cline-yes">33x</span>
|
|
441
|
+
<span class="cline-any cline-yes">1x</span>
|
|
495
442
|
<span class="cline-any cline-neutral"> </span>
|
|
496
443
|
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-yes">
|
|
444
|
+
<span class="cline-any cline-yes">33x</span>
|
|
498
445
|
<span class="cline-any cline-yes">1x</span>
|
|
499
446
|
<span class="cline-any cline-neutral"> </span>
|
|
500
447
|
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-yes">
|
|
448
|
+
<span class="cline-any cline-yes">33x</span>
|
|
449
|
+
<span class="cline-any cline-yes">1x</span>
|
|
502
450
|
<span class="cline-any cline-neutral"> </span>
|
|
503
|
-
<span class="cline-any cline-yes">17x</span>
|
|
504
|
-
<span class="cline-any cline-yes">17x</span>
|
|
505
|
-
<span class="cline-any cline-yes">17x</span>
|
|
506
451
|
<span class="cline-any cline-neutral"> </span>
|
|
507
452
|
<span class="cline-any cline-neutral"> </span>
|
|
508
453
|
<span class="cline-any cline-neutral"> </span>
|
|
509
|
-
<span class="cline-any cline-yes">17x</span>
|
|
510
454
|
<span class="cline-any cline-neutral"> </span>
|
|
511
455
|
<span class="cline-any cline-neutral"> </span>
|
|
512
456
|
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-yes">17x</span>
|
|
514
|
-
<span class="cline-any cline-yes">17x</span>
|
|
515
457
|
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-yes">17x</span>
|
|
517
|
-
<span class="cline-any cline-yes">17x</span>
|
|
518
458
|
<span class="cline-any cline-neutral"> </span>
|
|
519
459
|
<span class="cline-any cline-neutral"> </span>
|
|
520
460
|
<span class="cline-any cline-neutral"> </span>
|
|
461
|
+
<span class="cline-any cline-yes">33x</span>
|
|
462
|
+
<span class="cline-any cline-no"> </span>
|
|
463
|
+
<span class="cline-any cline-no"> </span>
|
|
464
|
+
<span class="cline-any cline-no"> </span>
|
|
465
|
+
<span class="cline-any cline-no"> </span>
|
|
521
466
|
<span class="cline-any cline-neutral"> </span>
|
|
522
467
|
<span class="cline-any cline-neutral"> </span>
|
|
523
468
|
<span class="cline-any cline-neutral"> </span>
|
|
469
|
+
<span class="cline-any cline-no"> </span>
|
|
470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
524
471
|
<span class="cline-any cline-neutral"> </span>
|
|
525
472
|
<span class="cline-any cline-neutral"> </span>
|
|
526
|
-
<span class="cline-any cline-yes">32x</span>
|
|
527
|
-
<span class="cline-any cline-yes">2x</span>
|
|
528
|
-
<span class="cline-any cline-yes">2x</span>
|
|
529
|
-
<span class="cline-any cline-yes">2x</span>
|
|
530
|
-
<span class="cline-any cline-yes">2x</span>
|
|
531
|
-
<span class="cline-any cline-yes">2x</span>
|
|
532
|
-
<span class="cline-any cline-yes">2x</span>
|
|
533
473
|
<span class="cline-any cline-neutral"> </span>
|
|
534
474
|
<span class="cline-any cline-neutral"> </span>
|
|
535
475
|
<span class="cline-any cline-neutral"> </span>
|
|
536
476
|
<span class="cline-any cline-neutral"> </span>
|
|
537
477
|
<span class="cline-any cline-yes">2x</span>
|
|
478
|
+
<span class="cline-any cline-no"> </span>
|
|
538
479
|
<span class="cline-any cline-neutral"> </span>
|
|
480
|
+
<span class="cline-any cline-yes">2x</span>
|
|
481
|
+
<span class="cline-any cline-no"> </span>
|
|
539
482
|
<span class="cline-any cline-neutral"> </span>
|
|
483
|
+
<span class="cline-any cline-yes">2x</span>
|
|
540
484
|
<span class="cline-any cline-neutral"> </span>
|
|
541
485
|
<span class="cline-any cline-neutral"> </span>
|
|
486
|
+
<span class="cline-any cline-yes">33x</span>
|
|
542
487
|
<span class="cline-any cline-yes">2x</span>
|
|
543
488
|
<span class="cline-any cline-yes">2x</span>
|
|
544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
545
489
|
<span class="cline-any cline-yes">2x</span>
|
|
546
490
|
<span class="cline-any cline-yes">2x</span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-yes">32x</span>
|
|
557
|
-
<span class="cline-any cline-yes">2x</span>
|
|
558
491
|
<span class="cline-any cline-yes">2x</span>
|
|
559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
563
492
|
<span class="cline-any cline-yes">2x</span>
|
|
564
493
|
<span class="cline-any cline-neutral"> </span>
|
|
565
494
|
<span class="cline-any cline-neutral"> </span>
|
|
566
|
-
<span class="cline-any cline-yes">32x</span>
|
|
567
|
-
<span class="cline-any cline-yes">1x</span>
|
|
568
|
-
<span class="cline-any cline-yes">1x</span>
|
|
569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-yes">32x</span>
|
|
572
|
-
<span class="cline-any cline-yes">1x</span>
|
|
573
|
-
<span class="cline-any cline-yes">1x</span>
|
|
574
|
-
<span class="cline-any cline-yes">1x</span>
|
|
575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-yes">1x</span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-yes">1x</span>
|
|
583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-yes">32x</span>
|
|
586
|
-
<span class="cline-any cline-yes">1x</span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-yes">32x</span>
|
|
590
|
-
<span class="cline-any cline-yes">1x</span>
|
|
591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-yes">32x</span>
|
|
594
|
-
<span class="cline-any cline-yes">1x</span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-yes">32x</span>
|
|
598
|
-
<span class="cline-any cline-yes">1x</span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
495
|
<span class="cline-any cline-neutral"> </span>
|
|
602
496
|
<span class="cline-any cline-neutral"> </span>
|
|
603
497
|
<span class="cline-any cline-neutral"> </span>
|
|
604
498
|
<span class="cline-any cline-neutral"> </span>
|
|
605
499
|
<span class="cline-any cline-neutral"> </span>
|
|
606
500
|
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-yes">2x</span>
|
|
607
502
|
<span class="cline-any cline-neutral"> </span>
|
|
608
503
|
<span class="cline-any cline-neutral"> </span>
|
|
609
504
|
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-
|
|
611
|
-
<span class="cline-any cline-yes">
|
|
612
|
-
<span class="cline-any cline-yes">1x</span>
|
|
613
|
-
<span class="cline-any cline-yes">1x</span>
|
|
614
|
-
<span class="cline-any cline-yes">1x</span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-yes">1x</span>
|
|
619
|
-
<span class="cline-any cline-yes">1x</span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
+
<span class="cline-any cline-yes">2x</span>
|
|
506
|
+
<span class="cline-any cline-yes">2x</span>
|
|
623
507
|
<span class="cline-any cline-neutral"> </span>
|
|
624
508
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
|
|
625
509
|
const actions = require("../../automations/actions")
|
|
626
|
-
const logic = require("../../automations/logic")
|
|
627
510
|
const triggers = require("../../automations/triggers")
|
|
628
|
-
const webhooks = require("./webhook")
|
|
629
511
|
const { getAutomationParams, generateAutomationID } = require("../../db/utils")
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
512
|
+
const {
|
|
513
|
+
checkForWebhooks,
|
|
514
|
+
updateTestHistory,
|
|
515
|
+
} = require("../../automations/utils")
|
|
516
|
+
const { deleteEntityMetadata } = require("../../utilities")
|
|
517
|
+
const { MetadataTypes } = require("../../constants")
|
|
518
|
+
const { setTestFlag, clearTestFlag } = require("../../utilities/redis")
|
|
633
519
|
|
|
634
520
|
/*************************
|
|
635
521
|
* *
|
|
@@ -637,6 +523,19 @@ const CRON_STEP_ID = triggers.BUILTIN_DEFINITIONS.CRON.stepId
|
|
|
637
523
|
* *
|
|
638
524
|
*************************/
|
|
639
525
|
|
|
526
|
+
async function cleanupAutomationMetadata(appId, automationId) {
|
|
527
|
+
await deleteEntityMetadata(
|
|
528
|
+
appId,
|
|
529
|
+
MetadataTypes.AUTOMATION_TEST_INPUT,
|
|
530
|
+
automationId
|
|
531
|
+
)
|
|
532
|
+
await deleteEntityMetadata(
|
|
533
|
+
appId,
|
|
534
|
+
MetadataTypes.AUTOMATION_TEST_HISTORY,
|
|
535
|
+
automationId
|
|
536
|
+
)
|
|
537
|
+
}
|
|
538
|
+
|
|
640
539
|
function cleanAutomationInputs(automation) {
|
|
641
540
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (automation == null) {
|
|
642
541
|
<span class="cstat-no" title="statement not covered" > return automation</span>
|
|
@@ -644,6 +543,10 @@ function cleanAutomationInputs(automation) {
|
|
|
644
543
|
let steps = automation.definition.steps
|
|
645
544
|
let trigger = automation.definition.trigger
|
|
646
545
|
let allSteps = [...steps, trigger]
|
|
546
|
+
// live is not a property used anymore
|
|
547
|
+
if (automation.live != null) {
|
|
548
|
+
delete automation.live
|
|
549
|
+
}
|
|
647
550
|
for (let step of allSteps) {
|
|
648
551
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (step == null) {
|
|
649
552
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
@@ -657,119 +560,6 @@ function cleanAutomationInputs(automation) {
|
|
|
657
560
|
return automation
|
|
658
561
|
}
|
|
659
562
|
|
|
660
|
-
/**
|
|
661
|
-
* This function handles checking of any cron jobs need to be created or deleted for automations.
|
|
662
|
-
* @param {string} appId The ID of the app in which we are checking for webhooks
|
|
663
|
-
* @param {object|undefined} oldAuto The old automation object if updating/deleting
|
|
664
|
-
* @param {object|undefined} newAuto The new automation object if creating/updating
|
|
665
|
-
*/
|
|
666
|
-
async function checkForCronTriggers({ appId, oldAuto, newAuto }) {
|
|
667
|
-
const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
|
|
668
|
-
const newTrigger = newAuto ? newAuto.definition.trigger : null
|
|
669
|
-
function isCronTrigger(auto) {
|
|
670
|
-
return (
|
|
671
|
-
auto &&
|
|
672
|
-
auto.definition.trigger &&
|
|
673
|
-
auto.definition.trigger.stepId === CRON_STEP_ID
|
|
674
|
-
)
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
const isLive = auto => auto && auto.live
|
|
678
|
-
|
|
679
|
-
const cronTriggerRemoved =
|
|
680
|
-
isCronTrigger(oldAuto) && <span class="branch-1 cbranch-no" title="branch not covered" >!isCronTrigger(newAuto) </span>&& <span class="branch-2 cbranch-no" title="branch not covered" >oldTrigger.cronJobId</span>
|
|
681
|
-
const cronTriggerDeactivated = !isLive(newAuto) && isLive(oldAuto)
|
|
682
|
-
|
|
683
|
-
const cronTriggerActivated = isLive(newAuto) && !isLive(oldAuto)
|
|
684
|
-
|
|
685
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (cronTriggerRemoved || (cronTriggerDeactivated && oldTrigger.cronJobId)) {
|
|
686
|
-
<span class="cstat-no" title="statement not covered" > await triggers.automationQueue.removeRepeatableByKey(oldTrigger.cronJobId)</span>
|
|
687
|
-
}
|
|
688
|
-
// need to create cron job
|
|
689
|
-
else <span class="missing-if-branch" title="if path not taken" >I</span>if (isCronTrigger(newAuto) && <span class="branch-1 cbranch-no" title="branch not covered" >cronTriggerActivated)</span> {
|
|
690
|
-
const job = <span class="cstat-no" title="statement not covered" >await triggers.automationQueue.add(</span>
|
|
691
|
-
{
|
|
692
|
-
automation: newAuto,
|
|
693
|
-
event: { appId, timestamp: Date.now() },
|
|
694
|
-
},
|
|
695
|
-
{ repeat: { cron: newTrigger.inputs.cron } }
|
|
696
|
-
)
|
|
697
|
-
// Assign cron job ID from bull so we can remove it later if the cron trigger is removed
|
|
698
|
-
<span class="cstat-no" title="statement not covered" > newTrigger.cronJobId = job.id</span>
|
|
699
|
-
}
|
|
700
|
-
return newAuto
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
/**
|
|
704
|
-
* This function handles checking if any webhooks need to be created or deleted for automations.
|
|
705
|
-
* @param {string} appId The ID of the app in which we are checking for webhooks
|
|
706
|
-
* @param {object|undefined} oldAuto The old automation object if updating/deleting
|
|
707
|
-
* @param {object|undefined} newAuto The new automation object if creating/updating
|
|
708
|
-
* @returns {Promise<object|undefined>} After this is complete the new automation object may have been updated and should be
|
|
709
|
-
* written to DB (this does not write to DB as it would be wasteful to repeat).
|
|
710
|
-
*/
|
|
711
|
-
async function checkForWebhooks({ appId, oldAuto, newAuto }) {
|
|
712
|
-
const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
|
|
713
|
-
const newTrigger = newAuto ? newAuto.definition.trigger : null
|
|
714
|
-
const triggerChanged =
|
|
715
|
-
oldTrigger && newTrigger && oldTrigger.id !== newTrigger.id
|
|
716
|
-
function isWebhookTrigger(auto) {
|
|
717
|
-
return (
|
|
718
|
-
auto &&
|
|
719
|
-
auto.definition.trigger &&
|
|
720
|
-
auto.definition.trigger.stepId === WH_STEP_ID
|
|
721
|
-
)
|
|
722
|
-
}
|
|
723
|
-
// need to delete webhook
|
|
724
|
-
if (
|
|
725
|
-
isWebhookTrigger(oldAuto) &&
|
|
726
|
-
(!isWebhookTrigger(newAuto) || <span class="branch-2 cbranch-no" title="branch not covered" >triggerChanged)</span> &&
|
|
727
|
-
oldTrigger.webhookId
|
|
728
|
-
) {
|
|
729
|
-
try {
|
|
730
|
-
let db = new CouchDB(appId)
|
|
731
|
-
// need to get the webhook to get the rev
|
|
732
|
-
const webhook = await db.get(oldTrigger.webhookId)
|
|
733
|
-
const ctx = {
|
|
734
|
-
appId,
|
|
735
|
-
params: { id: webhook._id, rev: webhook._rev },
|
|
736
|
-
}
|
|
737
|
-
// might be updating - reset the inputs to remove the URLs
|
|
738
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (newTrigger) {
|
|
739
|
-
delete newTrigger.webhookId
|
|
740
|
-
newTrigger.inputs = {}
|
|
741
|
-
}
|
|
742
|
-
await webhooks.destroy(ctx)
|
|
743
|
-
} catch (err) {
|
|
744
|
-
// don't worry about not being able to delete, if it doesn't exist all good
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
// need to create webhook
|
|
748
|
-
if (
|
|
749
|
-
(!isWebhookTrigger(oldAuto) || triggerChanged) &&
|
|
750
|
-
isWebhookTrigger(newAuto)
|
|
751
|
-
) {
|
|
752
|
-
const ctx = {
|
|
753
|
-
appId,
|
|
754
|
-
request: {
|
|
755
|
-
body: new webhooks.Webhook(
|
|
756
|
-
"Automation webhook",
|
|
757
|
-
webhooks.WebhookType.AUTOMATION,
|
|
758
|
-
newAuto._id
|
|
759
|
-
),
|
|
760
|
-
},
|
|
761
|
-
}
|
|
762
|
-
await webhooks.save(ctx)
|
|
763
|
-
const id = ctx.body.webhook._id
|
|
764
|
-
newTrigger.webhookId = id
|
|
765
|
-
newTrigger.inputs = {
|
|
766
|
-
schemaUrl: `api/webhooks/schema/${appId}/${id}`,
|
|
767
|
-
triggerUrl: `api/webhooks/trigger/${appId}/${id}`,
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
return newAuto
|
|
771
|
-
}
|
|
772
|
-
|
|
773
563
|
exports.create = async function (ctx) {
|
|
774
564
|
const db = new CouchDB(ctx.appId)
|
|
775
565
|
let automation = ctx.request.body
|
|
@@ -788,10 +578,6 @@ exports.create = async function (ctx) {
|
|
|
788
578
|
appId: ctx.appId,
|
|
789
579
|
newAuto: automation,
|
|
790
580
|
})
|
|
791
|
-
automation = await checkForCronTriggers({
|
|
792
|
-
appId: ctx.appId,
|
|
793
|
-
newAuto: automation,
|
|
794
|
-
})
|
|
795
581
|
const response = await db.put(automation)
|
|
796
582
|
automation._rev = response.rev
|
|
797
583
|
|
|
@@ -816,13 +602,25 @@ exports.update = async function (ctx) {
|
|
|
816
602
|
oldAuto: oldAutomation,
|
|
817
603
|
newAuto: automation,
|
|
818
604
|
})
|
|
819
|
-
automation = await checkForCronTriggers({
|
|
820
|
-
appId: ctx.appId,
|
|
821
|
-
oldAuto: oldAutomation,
|
|
822
|
-
newAuto: automation,
|
|
823
|
-
})
|
|
824
605
|
const response = await db.put(automation)
|
|
825
606
|
automation._rev = response.rev
|
|
607
|
+
|
|
608
|
+
const oldAutoTrigger =
|
|
609
|
+
oldAutomation && oldAutomation.definition.trigger
|
|
610
|
+
? oldAutomation.definition.trigger
|
|
611
|
+
: <span class="branch-1 cbranch-no" title="branch not covered" >{}</span>
|
|
612
|
+
const newAutoTrigger =
|
|
613
|
+
automation && automation.definition.trigger
|
|
614
|
+
? automation.definition.trigger
|
|
615
|
+
: <span class="branch-1 cbranch-no" title="branch not covered" >{}</span>
|
|
616
|
+
// trigger has been updated, remove the test inputs
|
|
617
|
+
if (oldAutoTrigger.id !== newAutoTrigger.id) {
|
|
618
|
+
await deleteEntityMetadata(
|
|
619
|
+
ctx.appId,
|
|
620
|
+
MetadataTypes.AUTOMATION_TEST_INPUT,
|
|
621
|
+
automation._id
|
|
622
|
+
)
|
|
623
|
+
}
|
|
826
624
|
|
|
827
625
|
ctx.status = 200
|
|
828
626
|
ctx.body = {
|
|
@@ -852,35 +650,29 @@ exports.find = async function (ctx) {
|
|
|
852
650
|
|
|
853
651
|
exports.destroy = async function (ctx) {
|
|
854
652
|
const db = new CouchDB(ctx.appId)
|
|
855
|
-
const
|
|
653
|
+
const automationId = ctx.params.id
|
|
654
|
+
const oldAutomation = await db.get(automationId)
|
|
856
655
|
await checkForWebhooks({
|
|
857
656
|
appId: ctx.appId,
|
|
858
657
|
oldAuto: oldAutomation,
|
|
859
658
|
})
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
})
|
|
864
|
-
ctx.body = await db.remove(ctx.params.id, ctx.params.rev)
|
|
659
|
+
// delete metadata first
|
|
660
|
+
await cleanupAutomationMetadata(ctx.appId, automationId)
|
|
661
|
+
ctx.body = await db.remove(automationId, ctx.params.rev)
|
|
865
662
|
}
|
|
866
663
|
|
|
867
664
|
exports.getActionList = async function (ctx) {
|
|
868
|
-
ctx.body = actions.
|
|
665
|
+
ctx.body = actions.ACTION_DEFINITIONS
|
|
869
666
|
}
|
|
870
667
|
|
|
871
668
|
exports.getTriggerList = async function (ctx) {
|
|
872
|
-
ctx.body = triggers.
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
exports.getLogicList = async function (ctx) {
|
|
876
|
-
ctx.body = logic.BUILTIN_DEFINITIONS
|
|
669
|
+
ctx.body = triggers.TRIGGER_DEFINITIONS
|
|
877
670
|
}
|
|
878
671
|
|
|
879
672
|
module.exports.getDefinitionList = async function (ctx) {
|
|
880
673
|
ctx.body = {
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
action: actions.DEFINITIONS,
|
|
674
|
+
trigger: triggers.TRIGGER_DEFINITIONS,
|
|
675
|
+
action: actions.ACTION_DEFINITIONS,
|
|
884
676
|
}
|
|
885
677
|
}
|
|
886
678
|
|
|
@@ -890,19 +682,53 @@ module.exports.getDefinitionList = async function (ctx) {
|
|
|
890
682
|
* *
|
|
891
683
|
*********************/
|
|
892
684
|
|
|
893
|
-
exports.trigger =
|
|
894
|
-
const
|
|
895
|
-
|
|
896
|
-
await
|
|
685
|
+
exports.trigger = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
|
|
686
|
+
const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
|
|
687
|
+
const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
|
|
688
|
+
let automation = <span class="cstat-no" title="statement not covered" >await db.get(ctx.params.id)</span>
|
|
689
|
+
<span class="cstat-no" title="statement not covered" > await triggers.externalTrigger(automation, {</span>
|
|
897
690
|
...ctx.request.body,
|
|
898
|
-
appId
|
|
691
|
+
appId,
|
|
899
692
|
})
|
|
900
|
-
ctx.
|
|
901
|
-
ctx.body = {
|
|
693
|
+
<span class="cstat-no" title="statement not covered" > ctx.body = {</span>
|
|
902
694
|
message: `Automation ${automation._id} has been triggered.`,
|
|
903
695
|
automation,
|
|
904
696
|
}
|
|
905
697
|
}
|
|
698
|
+
|
|
699
|
+
function prepareTestInput(input) {
|
|
700
|
+
// prepare the test parameters
|
|
701
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (input.id && <span class="branch-1 cbranch-no" title="branch not covered" >input.row)</span> {
|
|
702
|
+
<span class="cstat-no" title="statement not covered" > input.row._id = input.id</span>
|
|
703
|
+
}
|
|
704
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (input.revision && <span class="branch-1 cbranch-no" title="branch not covered" >input.row)</span> {
|
|
705
|
+
<span class="cstat-no" title="statement not covered" > input.row._rev = input.revision</span>
|
|
706
|
+
}
|
|
707
|
+
return input
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
exports.test = async function (ctx) {
|
|
711
|
+
const appId = ctx.appId
|
|
712
|
+
const db = new CouchDB(appId)
|
|
713
|
+
let automation = await db.get(ctx.params.id)
|
|
714
|
+
await setTestFlag(automation._id)
|
|
715
|
+
const testInput = prepareTestInput(ctx.request.body)
|
|
716
|
+
const response = await triggers.externalTrigger(
|
|
717
|
+
automation,
|
|
718
|
+
{
|
|
719
|
+
...testInput,
|
|
720
|
+
appId,
|
|
721
|
+
},
|
|
722
|
+
{ getResponses: true }
|
|
723
|
+
)
|
|
724
|
+
// save a test history run
|
|
725
|
+
await updateTestHistory(ctx.appId, automation, {
|
|
726
|
+
...ctx.request.body,
|
|
727
|
+
occurredAt: new Date().getTime(),
|
|
728
|
+
})
|
|
729
|
+
await clearTestFlag(automation._id)
|
|
730
|
+
ctx.body = response
|
|
731
|
+
}
|
|
906
732
|
</pre></td></tr></table></pre>
|
|
907
733
|
|
|
908
734
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -910,7 +736,7 @@ exports.trigger = async function (ctx) {
|
|
|
910
736
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
911
737
|
Code coverage generated by
|
|
912
738
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
913
|
-
at
|
|
739
|
+
at Wed Sep 22 2021 10:50:28 GMT+0000 (Coordinated Universal Time)
|
|
914
740
|
</div>
|
|
915
741
|
</div>
|
|
916
742
|
<script src="../../prettify.js"></script>
|